建模大致思路
- 数据读取
- 数据清洗
- 两变量假设检验
- 划分训练集和测试集
- 使用训练集做模型进行预测
- 模型检验(混淆矩阵、ROC)
- 模型调优(向前法去除不显著变量、多重共线性)
各变量解释
#subscriberID=“个人客户的ID”
#churn=“是否流失:1=流失”;
#Age=“年龄”
#incomeCode=“用户居住区域平均收入的代码”
#duration=“在网时长”
#peakMinAv=“统计期间内最高单月通话时长”
#peakMinDiff=“统计期间结束月份与开始月份相比通话时长增加数量”
#posTrend=“该用户通话时长是否呈现出上升态势:是=1”
#negTrend=“该用户通话时长是否呈现出下降态势:是=1”
#nrProm=“电话公司营销的数量”
#prom=“最近一个月是否被营销过:是=1”
#curPlan=“统计时间开始时套餐类型:1=最高通过200分钟;2=300分钟;3=350分钟;4=500分钟”
#avPlan=“统计期间内平均套餐类型”
#planChange=“统计期间是否更换过套餐:1=是”
#posPlanChange=“统计期间是否提高套餐:1=是”
#negPlanChange=“统计期间是否降低套餐:1=是”
#call_10086=“拨打10086的次数”
1.数据读取
首先读入数据
#%%
import os
import pandas as pd
#%%
os.chdir(r'D:\data_py\chapter5\ML_project_181227_chapter5')
telecom_churn=pd.read_csv('telecom_churn.csv')
数据有3463个观测,20个变量。
2.数据清洗
判断数据有多少的NA
telecom_na=pd.isna(telecom_churn)
for name in telecom_na.columns:
print(telecom_na[name].value_counts())
输出结果如图,发现该数据集并无NA
3.两变量假设检验
检验posTrend和churn是否相关,因为两变量均为离散性变量,先做列联表
cross_table=pd.crosstab(telecom_churn.posTrend,telecom_churn.churn,margins=True)