基于Python随机森林案例:给别人的爱情把关

我们都知道爱情不仅要有爱你之心,还有柴米油盐,最好的爱情不是风花雪月,而是雪中送炭,如果有一天爱情你都不相信了。不知道你接下来的日子该往哪里走,一定要相信你身边那个数据分析师的朋友,他会用数据告诉你的爱情之路怎么走?

1.案例背景

案例背景

某天,小C的表妹小Q来找小C,说他遇到一点困扰----小Q的同事给她介绍了一个对象Mr.Z,这个人现年37岁,在某省机关做文员工作,但是小Q的择偶标准是需要对方月薪在5w以上,不要说小Q拜金,只因世人都知软饭香,但是现在刚认识没多久,也就不好意思直接问Mr.z,所以拿不动主意要不要和Mr.z深入交往,(说白了就是不知道Mr.z到底有多少钱?),于是想让小C帮忙做一个决策,作为优秀的大数据分析师的小C,小C思忖良久,发现此事并不简单,还需要用到python,还需要搭建模型,于是小C一下子想到了决策树算法,通过联想,又想到了随机森林,灵光乍现,突然想起来一个好主意,于是他就开始了。。。。

数据集的准备

大家都知道一个著名的数据集-成年人数据集,包括千万条样本数据,样本数据中一般包括年龄,工作性质,统计权重,学历,受教育时长,婚姻状况,职业,家庭教育,种族,性别,资产所得,资产损失,每周工作时长,原籍,收入等,这个数据集应该有用,于是先下载看看。
下载链接:
源数据点击下载
在这里插入图片描述
下载完直接重命名为adult.csv,本来后缀是data,直接删掉,强行改为csv格式文档。
在这里插入图片描述

3.读取数据

import pandas as pd
data = pd.read_csv('D:\\Python\\adult.csv',header = None,index_col = False,
                  names = ['年龄','单位性质','权重','学历','受教育时长','婚姻状况','职业',
                           '家庭教育','种族','性别',
                           '资产所得','资产损失','周工作时长','原籍','收入'])
data_lite = data[['年龄','单位性质','学历','性别','周工作时长','职业','收入']]
data_lite.head()

运行结果展示:
在这里插入图片描述

4.用get_dummies处理数据

因为在数据集中,我们可以看到单位性质,学历,职业,性别还有收入都不不是整型数据,而是字符串,就是利用get_dummies将现有的数据集上添加虚拟变量,让数据集变成可以用的格式。虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量、非数量因素可能产生的影响。

data_dummies = pd.get_dummies(data_lite)
print('样本原始特征:\n',list(data_lite.columns),'\n')
print('虚拟变量特征:\n',list(data_dummies.columns))

运行结果展示:
在这里插入图片描述
接下来我们可以看一下处理后的数据:

data_dummies.head()

运行代码结果:
在这里插入图片描述

5.划分特征变量

各列数据分配给特征向量X和分类标签y,输入代码如下:

features = data_dummies.loc[:,'年龄':'职业_ Transport-moving']
X = features.values
y = data_dummies['收入_ >50K'].values #将收入大于50k的作为预测目标
print("代码运行结果:")
print('特征形态:{} 标签形态:{}'.format(X.shape,y.shape))

代码运行结果展示:
在这里插入图片描述

扫描二维码关注公众号,回复: 12114512 查看本文章

6.搭建数据模型

我们本次就用决策树搭建模型,我们有32561条样本数据,有44个特征向量。
1,将数据拆分成训练集和测试集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 0)

2.用最大深度为5的随机森林拟合数据

from sklearn import tree
go_dating_tree = tree.DecisionTreeClassifier(max_depth = 5)
go_dating_tree.fit(X_train,y_train)
print('模型得分:{:.2f}'.format(go_dating_tree.score(X_test,y_test)))

运行结果:
在这里插入图片描述
通过上面随机森林模型预测我们可以看出来,模型在测试集中得到了0.8分,可以说是很不错的,也就是这个模型预测准确度准确率在80%,相信这个模型给小Q的爱情中提供足够的参考。

7.爱情预测

预测就是按照小Q提供的情况,通过前面随机森林搭建的模型,对他的收入进行预测,看看是否能达到小Q的高于50w收入的要求。
下面是小Q提供的基本情况:
Mr.Z年龄37岁,在省机关工作,学历是硕士,性别男,每周工作40小时,职业文员,然后我们将其对应数据输入,通过模型进行预测,输入代码如下:

Mr_z = [[37,40,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]]
dating_dec = go_dating_tree.predict(Mr_z)
print("代码运行结果:")
print("=================================\n")
if dating_dec ==1:
    print("大胆去追求真爱吧,这哥们牛批!")
else:
    print("不用去了,不满足你的要求!")

运行结果:
在这里插入图片描述

8.结果分析

通过数据模型预测,显示结果如下,是的,机器冷冰冰告诉小Q一个残酷的事实,Mr.Z并不符合他的要求,当然出于常识,也知道文职工作人员收入也不会超过5W,都明白我们中国是不存在贪污受贿的。

9.参考文献

1.深入浅出python机器学习 段小手著。

猜你喜欢

转载自blog.csdn.net/qq_44176343/article/details/109769179