训练集|python机器学习:如何划分训练集和测试集
今天用一个实例给大家写写在机器学习中如何进行训练集和测试集的划分 。
实例操练
首先导入今天要使用的数据集
import pandas as pddf = pd.read_csv("carprices.csv")df.head()
文章图片
这是一个汽车销售的数据集,里面的变量包括汽车里程、使用年限、销售价格 。我们今天要做的就是用汽车里程、使用年限来建立一个预测销售价格的机器学习模型 。
首先,我们画图看一看数据关系
import matplotlib.pyplot as pltplt.scatter(df['Mileage'],df['Sell Price($)'])plt.scatter(df['Age(yrs)'],df['Sell Price($)'])
运行以上代码可以出2个点图,分别展示汽车里程和销售价格的关系和使用年限和销售价格的关系 。
文章图片
使用年限和销售价格的关系散点图
文章图片
汽车里程和销售价格的关系散点图
通过两个散点图,我们可以发现使用线性回归模型进行建模还是比较好的方法,现在我们就要进行训练集和测试集的划分了
训练集 用来训练模型,估计参数
测试集 用来测试和评估训练出来的模型好坏,不能用于训练模型
划分数据集实操
首先我们要指定数据和数据标签
X = df[['Mileage','Age(yrs)']]y = df['Sell Price($)']
在本例中,数据集为汽车里程和使用年限构成的数据框,标签为汽车价格 。
然后我们用train_test_split方法分割数据为训练集和测试集,代码如下
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
讲解一下train_test_split的参数:
train_test_split的基本形式如下
X_train,X_test, y_train, y_test =sklearn.model_selection.train_test_split(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)
其中
train_data:所要划分的样本特征集
train_target:所要划分的样本结果
test_size:样本占比,如果是整数的话就是样本的数量
random_state:是随机数的种子,在需要重复试验的时候,保证得到一组一样的随机数
stratify是为了保持split前类的分布,通常在类分布不平衡的情况下会用到stratify
在我们的例子中,我们只给出了test_size=0.3,所以我们按照7:3划分得到了训练集和测试集,而且这个划分是随机的 。我们可以看一看训练数据长啥样
X_trainy_train
以上代码可以分别输出训练集的数据和标签 。
建立线性回归模型
from sklearn.linear_model import LinearRegressionclf = LinearRegression()clf.fit(X_train, y_train)
通过以上代码我们便建立了回归模型,运用此模型我们可以进行对X_test的预测
clf.predict(X_test)
然后,我们将模型预测值和实际的y_test值进行对比可以得到模型正确率 。
clf.score(X_test, y_test)
文章图片
【训练集|python机器学习:如何划分训练集和测试集】可以看到,我们训练的线性回归模型的正确率达到90%多 。
推荐阅读
- 南小贱|AG战绩独一档,eStar状态比QG更好,暴风锐考虑退役,训练赛的瓜
- 贪玩_小潘潘|郎导亲承暂不改变退休计划,当下做好训练,只担心一事
- 准者篮球训练营|35+12+5+5!他曾是杜峰手下最能射的后卫
- 热门游戏分享|硬糖少女303成团出道创3完结? QQ飞车手游联动训练营或将继续!
- 王者荣耀|训练赛的瓜,AG战绩独一档,eStar状态比QG更好,暴风锐考虑退役
- 扫地机器人哪个牌子好?高效清洁首选德国大牌
- 机器人|达闼科技赴美上市一路坎坷 列入“实体名单”后会回归A股吗
- 悠家娱乐 VS Code 中的 Python 体验,#新闻拍一拍# 微软推出 Pylance,改善
- 塔图姆|好久不见!塔图姆参加训练更壮了!上肢肌肉明显结实一圈
- 国防军事早报|燃!燃!燃!直击武警“魔鬼周”极限训练