【机器学习】决策树案例一:利用决策树进行年龄与音乐类型喜好分类预测


手动反爬虫,禁止转载: 原博地址 https://blog.csdn.net/lys_828/article/details/122041951(CSDN博主:Be_melting)

 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息

1 利用决策树进行年龄与音乐类型喜好分类预测

1.1 导入模块与加载数据

import pandas as pd
music_df1= pd.read_csv('../data/music.csv')
music_df1.head()

输出结果如下。
请添加图片描述
数据读入之后,可以简单看一些各个字段的情况,使用info()方法进行输出。

music_df1.info()

输出结果如下。本案例属于对于决策树模型使用的基本流程进行认知,数据已经被处理干净,而且字段相对较少。
请添加图片描述

1.2 划分数据

划分特征数据和标签数据。

X = music_df1.drop(columns=['genre'])
X.head()
y = music_df1['genre']
y.head()

输出结果如下。
请添加图片描述

1.3 模型创建与训练

导入创建模型的模块,此案例是进行决策树分类,注意不是回归,然后再进行模型初始化。这里没有进行训练模型和测试模型的划分,而是直接将全部的数据进行应用到模型中。

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()

model.fit(X,y)

输出结果如下。
请添加图片描述

1.4 模型应用

模型训练完毕后,可以直接用于预测,也可以将模型保存在本地,遇到问题时候再调用。首先进行直接预测,比如任意输入两个字段的数据,看看模型最终预测的结果如何。

test_set=[[31,0]]
prediction = model.predict(test_set)
prediction

test_set=[[21,1]]
prediction = model.predict(test_set)
prediction

test_set=[[31,0],[21,1]]
prediction = model.predict(test_set)
prediction

输出结果如下。注意predict()方法中传入的是二维列表,其中可以放置单一的两个字段的数据,也可以输出多个两字段的数据,即完成单数据的分类预测和多数据的分类预测。
请添加图片描述
介绍完直接进行模型的分类预测使用,有时候模型训练一次消耗大量的时间,因此就需要提前把模型调整到最优状态下,如果需要使用时再直接调用本地训练好的模型即可。需要使用joblib模块,加载后将模型保存本地,需要使用时候再调用,代码如下。

import joblib
joblib.dump(model,'music.joblib')
model = joblib.load('music.joblib')

输出结果如下。dump()是将模型保存到本地,load()是将本地的模型加载到当前运行的环境中。
请添加图片描述
还是以刚刚进行预测的数据进行测试,看看结果是否一致。

test_set=[[31,0]]
prediction = model.predict(test_set)
prediction

test_set=[[21,1]]
prediction = model.predict(test_set)
prediction

输出结果如下,对比核实无误。
请添加图片描述
也可以取其中26岁,男女信息各一个进行分类预测,代码及核验代码如下。

test_set=[[26,0],[26,1]]
prediction = model.predict(test_set)
prediction

music_df1[music_df1.age == 26]

输出结果如下,预测结果和实际真实结果一模一样。
请添加图片描述

1.5 模型可视化

决策树进行分类预测的一个优势就是在于流程和结果都可以可视化展示,通过树图的方式呈现。

from sklearn import tree
tree.export_graphviz (model,out_file='music-dt.dot',feature_names=['age','gender']
                   ,class_names=sorted(y.unique()),label='all',rounded=True,filled=True) 

输出结果如下。其中第一个参数是训练好的模型变量,第二个是输出的可视化文件,第三个就是指定特征字段,第四个是标签字段,第五个是label显示设置,最后两个可以调用说明文档进行查看,此外还有很多的参数可以进行设置。
请添加图片描述
进行可视化,还需要有一个可视化专门软件,课程中提供的有graphviz-2.38.msi安装包,直接进行双击安装后即可。
请添加图片描述
安装完毕后在开始菜单就会添加这个程序,打开后选择File菜单项,再把生成的music.dot文件添加进来就可以进行可视化展现了。
请添加图片描述
如果要把可视化的结果进行保存到本地也很简单,点击Graph菜单栏,然后选择Setting后,跳出的窗口中指定保存的文件的位置和名称,指定完毕后点击下方的OK按钮即可。特别注意,保存到本地时候文件路径中不能有中文名称,否则无法识别路径,程序运行报错。
请添加图片描述
比如将图片保存到桌面,然后可以进一步加载到Jupyter notebook中,代码如下。

from IPython.display import Image 
Image(r"C:\Users\86177\Desktop\1.png")

输出结果如下。
请添加图片描述

1.6 数据核验

对于生成的可视化图形结果还可以进一步核实,比如这里的根节点选择的是age小于等于30.5,可以按照这个标准对原数据进行筛选,代码如下。

music_df1[music_df1.age > 30.5]
music_df1[music_df1.age <= 30.5]

输出结果如下,核验无误。结果中确实是有6个Classical类别,剩下的12条数据中每种类别均为3个,输出的树图可以代表决策树最终的分类预测结果。
请添加图片描述

  • 2
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
特征提取是机器学习和数据挖掘领域中至关重要的一步,其主要目的是从原始数据中提取出有用的、可区分的特征,以便机器学习算法能够更好地理解和利用数据。 在实际应用中,特征提取的过程有很多种方法,其中一种常见的方法是从业务角度出发,找出可能影响用户复购的因素,并利用现有数据集来量化这些特征。这个过程中需要对数据进行分析和处理,以提取出最具有代表性的特征。 具体来说,在用户复购的问题中,可以考虑构建用户特征、商家特征和用户-商家特征三个方面的特征。用户特征包括用户的年龄、性别、购买习惯、购买频率、购买点击率、用户复购率、喜好的产品类型喜好的品牌等。商家特征包括商家的流量、热销的产品类型、热销的品牌、口碑和产品评价等。用户-商家特征包括用户和商家之间的交互次数、购买点击率和购买商品数等。 对于这些特征,可以使用不同的方法进行提取和处理,例如使用独热编码处理性别特征,计算用户购买过的店家的唯一值总数和购买过的商家总数来量化用户购买习惯特征,计算商家复购率来量化商家的产品评价特征等。通过这些方法,可以将原始数据转换为更易于处理和分析的形式,从而提高模型的预测能力和准确性。 总之,特征提取是机器学习和数据挖掘领域中非常重要的一步,通过构建合适的特征,可以更好地理解和利用数据,提高模型的效率和泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值