PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-1
https://developer.aliyun.com/article/1489340
分类总结
我们制作仅包含分类变量的数据子集,以便更轻松地绘制箱线图
data_categorical = data\[\['job', 'marital', 'education', 'default', 'housing', 'loan','month', 'y'\]\]
我们还查看了分类变量,看看是否有一些有趣的特征
从上面的条形图中可以看出,最有趣的结果来自变量:婚姻状况、教育和工作。
从代表婚姻状况的图表来看,大多数人都已婚。
正如我们在代表教育的图表上看到的那样 - 最大的是接受过中等教育的人数。
在约伯的情况下,我们可以看到大多数人都有蓝领和管理工作。
我们还想在马赛克图上查看我们的分类变量与 y 变量之间的关系。
plt.rcParams\['font.size'\] = 16.0
正如我们所见,大多数人都拒绝了该提议。就地位而言,已婚的人说“不”最多。
在可变违约的情况下,大多数没有违约信用的人也拒绝了该提案。
大多数有住房贷款的人也拒绝了该提议。
大多数没有贷款的人拒绝了这个提议。
数据挖掘
data.head(5)
我们想更深入地研究我们的变量,看看我们是否可以用它们做更多的事情。
我们的下一步是使用 WOE 分析。
finv, IV = datars(data,data.y) IV
基于对我们有用的 WOE 分析变量是:pdays、previous、job、housing、balance、month、duration、poutcome、contact。
在下一步中,我们决定根据 WOE 结果和变量的先前结果删除无用的列。
我们删除的其中一个列是 poutcome,尽管它的 WOE 很高,但我们决定删除它,因为从 prevois 分析中我们看到它有许多未知的观察结果。
在可变持续时间的情况下,我们也可以看到WOE相当大,甚至可以说这个结果有点可疑。我们决定根据 WOE 结果放弃它,因为我们的模型应该根据过去的数据说明是否建议给某个人打电话。
在可变接触的情况下,我们放弃了它,因为对我们来说,接触形式在我们的模型中没有用。
我们还删除了变量 day 因为它对我们没有用,因为这个变量代表天数,而该变量的 WOE 非常小。我们删除的最后一个变量是变量 pdays,尽管这个变量 WOE 的结果非常好,但它对我们来说并不是一个有用的变量。
我们分析中剩下的列:
特征选择和工程
要执行我们的算法,我们首先需要将字符串更改为二进制变量。
data = pd.get_dummies(data=data, columns = \['job', 'marital', 'education' , 'month'\], \ prefix = \['job', 'marital', 'education' , 'month'\])
我们更改了列的名称。
data.head(5)
创建虚拟变量后,我们进行了 Pearson 相关。
age = pearsonr(data\['age'\], data\['y'\])
sns.heatmap(corr
我们选择了数字列来检查相关性。正如我们所看到的,没有相关性。
我们查看因变量和连续变量之间的关系。
pylab.show()
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-3