本人是跟着b站学习Python的小白,走了许多弯路,怕忘记所以记下来方便查阅。
学习Python的b站视频🔗https://www.bilibili.com/video/BV14J411U7hj
视频中所提到的下载数据的网站是外网,不太方便,所以这里推荐一个中文的网站:
和鲸社区https://www.heywhale.com/mw/project/5d91f803037db3002d3b77cd
(有和视频中一样的数据,但是一天只有免费下载一个数据集的机会)
一、建立简单的机器学习模型进行预测
- 导入数据集
import pandas as pd
music_data = pd.read_csv('music.csv')
注意:自己创建表格时先用excel进行编辑,保存成xlsx格式后再另存为csv格式,才能顺利导入数据集(直接改后缀可能无法实现,记得一定要另存为csv格式!!!)
注意:一般情况下,接下来的一个步骤应该是clean the data,对数据进行去重、删除、修改、变成可用形式(例如:数值)等操作。这里的案例不需要这些步骤。
- 将数据集分成两个独立的集合
X = music_data.drop(columns = ['genre'])
y = music_data['genre']
(1)使用.drop生成没有genre这列值的输入集X
(2)生成只有genre这列值的输出集y
- 建立机器学习的模型
机器学习的模型有很多种,这个案例使用的是决策树。
(1)导入决策树分类器
from sklearn.tree import DecisionTreeClassifier
(2)建立模型
model = DecisionTreeClassifier()
model.fit(X,y)
(3)调用模型进行预测
predictions = model.predict([ [21,1], [22,0] ]) #数组为输入的需要预测的值
注意:一般情况下会选择70%左右的数据作为训练数据,30%左右的数据作为测试数据,以验证预测数据与实际情况的偏差。
二、模型评估
- 评估模型的准确性
(1)导入分割数据的模块,将数据集分成训练集和测试集两个部分
from sklearn.model_selection import train_test_split
(2)设置X_train和X_test这两个输入集变量以及y_train和y_test两个输出集变量
X_train,X_test,y_train,y_test = train_test_split(X, y, test_size = 0.2)
0.2是测试集在数据集中的占比,可根据需要更改,建议在0.3左右。
(3)修改模型参数
因为是为了测试输入集预测的正确性,所以这里只用传递训练数据集。
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
(4)引入准确度模块
from sklearn.metrics import accuracy_score
(5)测试准确度
将预测值与测试集的实际值进行对比。
score = accuracy_score(y_test,predictions)
注意:本次测试的精确度只有0.5,可能是因为数据太少了,正常的一个项目需要成千上万个数据。
此部分完整的代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre'])
y = music_data['genre']
X_train,X_test,y_train,y_test = train_test_split(X, y, test_size = 0.2)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
score = accuracy_score(y_test,predictions)
score