训练集|python机器学习:如何划分训练集和测试集

今天用一个实例给大家写写在机器学习中如何进行训练集和测试集的划分 。
实例操练
首先导入今天要使用的数据集
import pandas as pddf = pd.read_csv("carprices.csv")df.head()
训练集|python机器学习:如何划分训练集和测试集
文章图片
这是一个汽车销售的数据集,里面的变量包括汽车里程、使用年限、销售价格 。我们今天要做的就是用汽车里程、使用年限来建立一个预测销售价格的机器学习模型 。
首先,我们画图看一看数据关系
import matplotlib.pyplot as pltplt.scatter(df['Mileage'],df['Sell Price($)'])plt.scatter(df['Age(yrs)'],df['Sell Price($)'])
运行以上代码可以出2个点图,分别展示汽车里程和销售价格的关系和使用年限和销售价格的关系 。
训练集|python机器学习:如何划分训练集和测试集
文章图片
使用年限和销售价格的关系散点图
训练集|python机器学习:如何划分训练集和测试集
文章图片
汽车里程和销售价格的关系散点图
通过两个散点图,我们可以发现使用线性回归模型进行建模还是比较好的方法,现在我们就要进行训练集和测试集的划分了
训练集 用来训练模型,估计参数
测试集 用来测试和评估训练出来的模型好坏,不能用于训练模型
划分数据集实操
首先我们要指定数据和数据标签
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机器学习:如何划分训练集和测试集
文章图片
【训练集|python机器学习:如何划分训练集和测试集】可以看到,我们训练的线性回归模型的正确率达到90%多 。


    推荐阅读