前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >拆散数据的艺术

拆散数据的艺术

作者头像
木羊
发布2022-04-11 17:31:47
2450
发布2022-04-11 17:31:47
举报
文章被收录于专栏:睡前机器学习

昨天是1.11,小光棍节,应该昨天发这篇才应景。算了,今天我们聊切数据。

第一个问题是:数据为什么要切呢?

这和模型训练的不同阶段有关。机器学习实际上需要用到至少两套数据集,分别为训练集和测试集,顾名思义,模型训练使用训练集,评估模型的好坏则使用测试集。

那么,这就有一个问题了。

数据的收集可没分什么训练测试,都是采集一条就录入一条,最后形成的是一个完整的数据集。

举个例子好了。这两天都在玩加州房价数据集,今天扒了扒,发现sklearn自己就带了一套类似的数据集,叫波士顿房价数据集(boston house-prices dataset),连下载都免了。今天就用它。

使用方法很简单。调用load_boston,就能得到array类型的数据集:

代码语言:javascript
复制
from sklearn import datasets
X,y = datasets.load_boston(return_X_y=True)

值得一讲的估计只有这个return_X_y=True,这也是这个API唯一的参数。

先讲一下这个波士顿房价数据集,一共506个样本,分成了两个array,一个array包含13个维度,名称和含义依次分别如下:

代码语言:javascript
复制
CRIM per capita crime rate by town

ZN proportion of residential land zoned for lots over 25,000 sq.ft.

INDUS proportion of non-retail business acres per town

CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)

NOX nitric oxides concentration (parts per 10 million)

RM average number of rooms per dwelling

AGE proportion of owner-occupied units built prior to 1940

DIS weighted distances to five Boston employment centres

RAD index of accessibility to radial highways

TAX full-value property-tax rate per $10,000

PTRATIO pupil-teacher ratio by town

B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town

LSTAT % lower status of the population

另一个array只有一个维度,记录的内容名叫MEDV ,意思是“Median value of owner-occupied homes in $1000’s”,简单来说就是价钱。

这个数据集明码实价,就是用来喂回归模型的,要预测的标的自然就是这个MEDV 。不过,有监督学习得先把参考答案蒙上,为了方便操作,数据集提供了参数return_X_y,默认是Fasle,只要设置为True,就会自动把两个array分开,方便训练模型。

现在已知条件和参考答案分开了,可是训练集和测试集还没分开。自己动手撸一段代码实现也不是不行,不过sklearn已经实现了一款趁手工具,大家用过都说好,这就是专业切分数据集的train_test_split。

这款Api名气大得很,几乎提到数据集处理的文章里面都有它。

看一下介绍:

一共6个参数,分为三类。第一个参数自然是输入待切分的数据集了,第二、第三个参数是设置训练集和测试集的大小,剩下三个参数则是调控随机抽样。

简单易懂,后五个参数都有默认值,直接塞入原始数据集看看吧:

代码语言:javascript
复制
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y)

输出的这四个变量分别是训练集的已知项、测试集的已知项、训练集的预测项和测试集的预测项。

怎么看效果呢?

还记得原始的数据集有506个样本吧,切分之后,训练集有379个样本,测试集则有127个样本。这是因为根据默认设置,训练集和测试集的比例是3:1。

下次再聊。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡前机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档