数据来源:客户流失判断
赛题理解
- 任务理解:建分类模型,判断客户是否流失,属于二分类问题
- 数据
1). 数据理解:对字段要理解,每个字段有什么用
2). 赛事提供了train、test_noLabel、samples_noLabel和submit_example这4个csv文件,对这4个文件也要清楚各是什么用;首先train是训练集,test_noLabel是无标签的测试集,submit_example是提交示例,samples_noLabel是无标签示例;起初我在查看4个文件后发现submit_example的ID就是test_noLabel的ID,所以以为测试集可以合并,然后提交的时候用samples_noLabel的预测结果去提交,在建模预测后提交结果发现并没用,提交的所需要的是test_noLabel的预测结果。所以。。为啥子要弄个samples_noLabel没什么用???
1.分析思路
- 明确分析目的:
1.预测哪些用户可能流失
2.可能流失的客户有哪些特征 - 确定分析思路:
1.结合给出的数据字段,可以将客户流失大致分为三个维度:客户属性、客户消费行为、服务属性。
2.首先从单个特征依次分析其与客户流失的关系,然后对特征之间的相关性进一步探索与可视化。
2.探索性数据分析
2.1读取数据并查看
包括对数据类型的查看、检查数据集的缺失值情况、空值情况等。
train = pd.read_csv('train.csv')
test = pd.read_csv('test_noLabel.csv')
test_label1 = pd.read_csv('submit_example.csv') # 这个是提交示例也好像没什么用
# 检查数据集大小
print('各个数据集的维度依次是:train_{},test_{},submission_{}'.format(train.shape,
test.shape,
test_label1.shape))
# 输出:各个数据集的维度依次是:train_(5227, 16),test_(1307, 15),submission_(1307, 2)

# 描述性统计
train.describe(include='all')

结论: 该数据集无缺失值也无空值。
接下来对整体数据的正负样例进行查看,发现数据集不是平衡数据集。
用饼图显示客户流失率:
2.2单一特征分析

《精益数据分析》第二章是对指标的介绍,其中指出好的数据指标是比率,仅通过对流失客户与非流失客户关于某个特征的频数计数,不能直接比较二者之间的客户流失率。
这段代码将直方图频数转换为百分比:
def barplot_percentages(df,feature):
g=df.groupby(by=feature)['Label'].value_counts(1)