董圆成的公众号
学习篇
个人总结 | 学习借鉴 | 经验分享
建模数据用的是逻辑回归的数据集-电信客户是否流失数据。首先还是要导入需要的模块,导入数据集,之后做一个变量的重要性筛选,筛选出对流失有影响的变量,这里先用了相关系数矩阵排除一些相关性大的变量,在利用卡方检验排除那些P值不显著的变量,对于连续变量也可以先将连续变量进行分箱处理,在做卡方检验。
得到需要建模的变量数据单独保存为一个dataframe,用于区别之前的源数据内容。分别选出目标变量和自变量作单独存放,在sklearn中有一个模块可以用于将样本数据分为训练数据集和测试数据集,其中占比自己可以通过参数进行设置,一般是1:9>测试:训练>5:5,这里选取为测试:训练=3:7。
然后建立决策树,用做出的模型预测训练集和测试集的结果、概率,制作出混淆矩阵,另外查看分类指标(覆盖率,F1_score等)和变量重要性指标(意思是目标变量中样本个数占总体样本的多少)。绘制一个图形查看预测值的分布情况,在进行制作ROC曲线,根据图形判断训练集数据和测试集数据是否过度拟合,这里从图形看到训练集数据的表现结果超过测试集数据的情况,判断为过度拟合。
察看预测值的分布情况
出现过度拟合的图形
发生了过拟合的情况,这时我们就需要调整建立决策树时的超参数的情况,可以通过网格搜索,我们创建一个网格(字典格式),把超参数的key和values写在这个网格当中,利用sklearn.model_selection中的GridSearchCV,进行一一计算,这里分数设置为roc_auc,网格搜索会选出分数最高的模型参数作为最优超参数,我们可以通过(.best_params_)查看最优超参数结果,利用网格搜索调整后的模型绘制ROC曲线,根据绘图情况判断过拟合是否解决。
修正过度拟合之后的图形
得到最优超参数重新建立一个决策树,然后利用可视化在变现出来结果。
最终建立决策树结果
最后为将做好的模型保存为文件,方便下次调用。
-LOVE&PEACE-
领取专属 10元无门槛券
私享最新 技术干货