sklearn 购买预测分析
Abstract
本报告使用了多种模型,对给定的数据进行学习,预测客户是否会购买。本报告使用了AdaBoost、SVC、决策树、随机森林四种模型,在处理不平衡数据时分别使用了欠采样和过采样方法进行训练,最后经过比较选择使用随机森林模型和欠采样方法,采用该方法的交叉验证平均AUC值为0.9199,最后绘制 ROC 曲线。
关键词:随机森林,机器学习, python
目录
1 前期工作 2
2 数据清洗与整理 3
3 构建训练集及测试集 4
4 定义绘制ROC曲线的函数 6
5 分别使用AdaBoost、SVC、决策树、随机森林进行训练和评估 6
6 使用过采样方法平衡数据集并使用AdaBoost、SVC、决策树、随机森林进行训练和评估 8
7 使用欠采样方法平衡数据集并使用AdaBoost、SVC、决策树、随机森林进行训练和评估 9
8 统计分析 11
9 References 12
1 前期工作
首先导入pandas 以及 matplotlib.pyplot,使用 ggplot 作图风格,并导入数据
2 数据清洗与整理
查看数据:
进行数据清洗, 首先使用上一行的数据填充缺失值:
其次使用factorize方法将访客类型、月份、周末这3列转为int类型数据:
可以看到现在的数据无空值并且全为整型或浮点数型, 完成数据清洗。
3 构建训练集及测试集
使用sklearn的train_test_split方法将数据3 : 7的比例分为测试集和训练集
4 定义绘制ROC曲线的函数
5 分别使用AdaBoost、SVC、决策树、随机森林进行训练和评估
可以看到随机森林的预测效果是比较好的。
6 使用过采样方法平衡数据集并使用AdaBoost、SVC、决策树、随机森林进行训练和评估
使用过采样方法后, 训练集共有10164组数据。
代码类似 省略了
可以看到平衡数据集后大多数模型的预测auc值没有明显变化, 其中仍旧是随机森林的模型效果最好。
绘制结果分布图:
可以看到有意愿购买的概率是符合预期的。
7 使用欠采样方法平衡数据集并使用AdaBoost、SVC、决策树、随机森林进行训练和评估
使用欠采样方法后, 训练集共有1918组数据, 0 1的比例为1:1。
略
8 统计分析
模型名称 原始数据 过采样数据 欠采样数据
AdaBoost 0.9097 0.9097 0.9097
SVC 0.8585 0.8544 0.8544
决策树 0.7502 0.7501 0.7483
随机森林 0.9207 0.9216 0.9223
可以从表中看到效果最好的是使用随机森林模型的欠采样数据训练的结果。
其ROC曲线图如下: