科技小数据|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)
其中
【科技小数据|python机器学习:如何划分训练集和测试集】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)
本文插图
可以看到 , 我们训练的线性回归模型的正确率达到90%多 。
推荐阅读
- 数据流|比亚迪M6用诊断仪无法读取TCU数据流检修
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 技术编程|如何利用数据库进行世界史研究
- 行业互联网,AI人工智能|城市教育大脑以“ AI+ 大数据”为核心 , 引领教育变革
- 行业互联网|眼控科技聚焦航空气象报文,人工智能助推编发自动化
- 行业互联网|金风科技中标哈萨克斯坦札纳塔斯二期100MW风电项目
- 无人科技,电池技术|盘点几种常见的无人机电池
- 行业互联网,智慧医疗|商汤科技创“心”升级,探索“联邦学习”入选ECCV
- 行业互联网|创盈Charmwin惊艳亮相2020上海美博会,打造“光”科技健康护肤新风尚
- |如何分析“会员数据”,强化门店的竞争力?