航空公司客户流失分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

扩展思考

1.背景与挖掘目标

在国内航空市场竞争日益激烈的背景下,航空公司在客户流失方面应该引起足够的重视。如何改善流失问题,继而提高客户的满意度、忠诚度是航空公司维护自身市场并面对激烈竞争的一件大事,客户流失分析将成为帮助航空公司开展持续改进活动的指南。

根据拓展思考数据实现以下目标:

借助航空公司客户数据,对客户进行分类;

针对目前老客户进行分类预测;

构建客户·的流失模型,运用模型预测未来客户的类别归属。

2.1 数据抽取

从航空公司系统内的详细数据中,根据末次飞行日期(LAST_FLIGHT_DATE),抽取2021-6-4--2014-3-9内所有乘客详细信息。其中包含了会员卡号、入会时间、性别、年龄、会员卡级别、工作地城市、工作地所在省份、工作地所在国家、观测窗口结束时间、观测窗口乘机积分、飞行公里数、飞行次数、飞行时间、乘机时间间隔、平均折扣率等44各属性。

2.2 数据探索分析

本案例的探索分析是对数据进行缺失值分析与异常值分析,分析出数据的规律以及异常值。通过对数据进行观察发现原始数据中存在票价最小值为0、总飞行公里数大于0的记录。

可能是客户乘坐0折机票或者积分兑换造成的。

数据探索分析代码

%% 数据空缺值探索,如果是字符串则返回缺失值个数,

% 如果是数值型返回缺失值个数以及最大最小值

clear;

% 参数初始化

datafile= '拓展思考样本数据.csv' ; % 航空原始数据,第一行为属性标签

logfile = 'log.txt'; % 日志文件

resultfile = 'explore.xls'; % 数据探索结果表

%% 读取数据

[num,txt] = xlsread(datafile);

[rows,cols] = size(num);

% 初始化结果变量

results = cell(5,cols+1);

result = zeros(4,cols);

results(:,1)= {'属性';'空记录数';'缺失率';'最大值';'最小值'};

results(1,2:end)=txt(1,:);

% 记录日志

log_add(logfile,['文件' datafile '一共有' num2str(rows) ...

'条记录']);

%% 遍历所有列,进行空缺判断

for i= 1: cols

% 判断txt每列从第二行开始,是否都是空串

empty_sum = sum(cellfun(@isempty,txt(2:end,i))); % 如果是空串,则empty_sum==rows,即为数值型

if empty_sum==rows % 该列为数值型

min_ = min(num(:,i)); % 最小值

max_ = max(num(:,i)); % 最大值

nan_sum = sum(isnan(num(:,i)));

nan_rate = nan_sum/rows; % 缺失率

loginfo=['属性列' txt{1,i} '是数值型,其最大值为'...

num2str(max_) ',最小值为' num2str(min_) ...

',缺失值个数为' num2str(nan_sum) '个,缺失率为'...

num2str(nan_rate)];

log_add(logfile,loginfo);

% if nan_sum~=0

% disp(loginfo);

% end

result(1,i)=nan_sum;

result(2,i)=nan_rate;

result(3,i)=max_;

result(4,i)=min_;

else% 该列为字符串型,接着判断txt

[emptynum,emptyrate]= find_empty(txt(2:end,i));

loginfo=['属性列' txt{1,i} '是字符串型,缺失值个数为'...

num2str(emptynum) '个,缺失率为'...

num2str(emptyrate)];

log_add(logfile,loginfo);

% if emptynum~=0

% disp(loginfo);

% end

result(1,i)=nan_sum;

result(2,i)=nan_rate;

end

end

%% 写入数据探索结果

results(2:end,2:end)=num2cell(result);

xlswrite(resultfile,results');

2.3数据预处理

1.数据清洗

通过数据探索分析,发现数据中存在缺失值、最小值为0、折扣率最小值为0、总飞行公里数大于0的记录。

数据清洗代码

%% 数据清洗,过滤掉不符合规则的数据

clear;

% 参数初始化

datafile = '拓展思考样本数据.csv'; % 数据文件

cleanedfile = 'data_cleaned.csv'; % 数据清洗后保存的文件

%% 清洗空值和不符规则的数据

[num,txt]=xlsread(datafile);

[row,col]=size(txt);

% 数据整合

for i=1:col

% 判断txt每列从第二行开始,是否都是空串

empty_sum = sum(cellfun(@isempty,txt(2:end,i))); % 如果是空串,则empty_sum==row-1,即为数值型

if empty_sum == row-1

txt(2:end,i)=num2cell(num(:,i)); % 把数值型转为cell类型,并整合end

% if mod(i,500)==0

% disp(['已整合数据' num2str(i) '条记录...']);

% end

end

disp(['过滤前行数:' num2str(size(txt,1))]);

% 初始化变量

txt_copy=[];

rule1_sum =0;

rule2_sum =0;

% 数据过滤

for i=2:row % 从第二行数据行开始判断

% 判断每一行数据是否符合规则,其中filter_data为自定义函数,

% 如果数据符合要求则返回1,否则返回0

相关文档
最新文档