train_test_split, 关于随机抽样和分层抽样
https://zhuanlan.zhihu.com/p/49991313
在将样本数据分成训练集和测试集的时候,应当谨慎地考虑一下是采用纯随机抽样,还是分层抽样。
通常,数据集如果足够大,纯随机抽样的方式,将样本数据分成两个子集是没有太大的问题。
如果不是,纯随机抽样肯可能会导致抽样数据偏差,影响训练效果,降低预测模型预测的准确性。
设想调查公司需要做1000份抽样调查,调查的问题和性别可能有较大的相关性。如果想让调查结果代表全国男性和女性对这些问题的看法,假设全国人口男女比例大致为60:40,那么在1000份问卷也应当尽量保持男女比例达到同样的比例,即参加问卷调查的男女数差不多是600和400。
这个就是分层抽样。
如果参加问卷的男女数比例很不一样,比如女性占到了60%或更多,那么调查结伦就会出现重大偏差。
使用sklearn.model_selection.train_test_split,参数stratify即用来指定按照某一特征进行分层抽样,生成训练集和测试集。
看一下随机抽样和分层抽样时,按照某一特征的取值,在训练集的占比情况。
income_count = housing['income_cat'].value_counts().sort_index()
print('\nAfter categorized:\n{}'.format(income_count))
income_count.plot.bar()
plt.show()
print('Overall dataset, distribution of each category: (%)')
print(income_count/len(housing)*100)
# random split
train_set, test_set = train_test_split(housing, random_state=42)
train_set_income_count = train_set['income_cat'].value_counts().sort_index()
print('\nRandom split train dataset, distribution: (%)')
print(train_set_income_count/len(train_set)*100)
# stratify split
train_set, test_set = train_test_split(housing,
stratify=housing['income_cat'], random_state=42)
train_set_income_count = train_set['income_cat'].value_counts().sort_index()
print('\nStartify split train dataset, distribution: (%)')
print(train_set_income_count/len(train_set)*100)
得到结果如下:
可以看到分层抽样所分出来的训练集(和测试集)数据在关键特征上具有和总体数据集上基本一致的分布。
因此采用分层抽样来生成训练集和测试集将会更严谨。
train_test_split, 关于随机抽样和分层抽样的更多相关文章
- (数据科学学习手札27)sklearn数据集分割方法汇总
一.简介 在现实的机器学习任务中,我们往往是利用搜集到的尽可能多的样本集来输入算法进行训练,以尽可能高的精度为目标,但这里便出现一个问题,一是很多情况下我们不能说搜集到的样本集就能代表真实的全体,其分 ...
- 【机器学习算法-python实现】採样算法的简单实现
1.背景 採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样).经常使用的採样算法有下面几种(来自百度知道): 一.单纯随机抽样(simple random samp ...
- SAS随机抽样以及程序初始环境
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本来转载于SAS随机抽样 在统计研究中,针对容 ...
- 随机抽样一致性算法(RANSAC)示例及源代码
作者:王先荣 大约在两年前翻译了<随机抽样一致性算法RANSAC>,在文章的最后承诺写该算法的C#示例程序.可惜光阴似箭,转眼许久才写出来,实在抱歉.本文将使用随机抽样一致性算法来来检测直 ...
- 随机抽样一致性算法(RANSAC)
本文翻译自维基百科,英文原文地址是:http://en.wikipedia.org/wiki/ransac,如果您英语不错,建议您直接查看原文. RANSAC是"RANdom SAmple ...
- sklearn.model_selection 的 train_test_split作用
train_test_split函数用于将数据划分为训练数据和测试数据. train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取train_data和test_data ...
- train_test_split数据切分
train_test_split 数据切分 格式: X_train,X_test, y_train, y_test =cross_validation.train_test_split(train_d ...
- sklearn 的train_test_split
train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签. 格式: from sklearn.model_selection imp ...
- 训练集测试集划分 train_test_split(X, y, stratify=y)
from sklearn.model_selecting import train_test_spilt() 参数stratify: 依据标签y,按原数据y中各类比例,分配给train和test,使得 ...
随机推荐
- CM和CDH的安装-准备工作
估计要分开来两篇博客说明,因为截图较多. 1.三个节点cdh1(主节点),cdh2,cdh3 配置就用一张图来说明,因为资源有限 2.版本依赖说明: CDH-5.9.0-1.cdh5.9.0.p0.2 ...
- 如何删除一个CSDN上自己上传的资源
原文地址:http://www.xuebuyuan.com/1875216.html 昨天晚上进行测试,上传了一个压缩包和大家分享,测试完成后,为了不想给被测试的公司造成伤害,决定把上传的包删除,结果 ...
- Redis /etc/redis.conf 常用配置
Redis 基础配置: daemonize yes // 设置以daemon方式启动 logfile "/var/log/redis.log" // 设置日志文件路径 dir /d ...
- osgExp只能将3dmax中的动画导出为路径动画osg::AnimationPath,而不能导出osgAnimation::Animation。osg播放骨骼动画应该使用FBX格式
通过实际的模型测试,导出为.osg文本格式,搜索animation,只能搜索到AnimationPathCallback,而搜索不到osgAnimation相关类 在OSGExp1.5.0源代码中搜索 ...
- JSP中的动态包含和静态包含的区别
本文转载自http://blog.csdn.net/xuxu198899223/article/details/8501044 1. 语法格式 (1)静态包含:<%@ include file= ...
- Android开发训练之第五章第五节——Resolving Cloud Save Conflicts
Resolving Cloud Save Conflicts IN THIS DOCUMENT Get Notified of Conflicts Handle the Simple Cases De ...
- 在本机搭建mycat 单机环境,使用mariadb 伪集群
首先搭建mairadb的集群 master 使用端口3306 slave 使用端口3406 master 相关配置 在my.ini 文件的[mysqld] 节点中添加或修改如下配置 #允许其他机器re ...
- PCL—低层次视觉—关键点检测(Harris)
除去NARF这种和特征检测联系比较紧密的方法外,一般来说特征检测都会对曲率变化比较剧烈的点更敏感.Harris算法是图像检测识别算法中非常重要的一个算法,其对物体姿态变化鲁棒性好,对旋转不敏感,可以很 ...
- Linux系统启动内幕
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程序在执行时的异同.协议栈的架构和原理.驱动程序的机制等 ...
- C语言程序设计--字符串与指针及数组与指针
数组的基本知识 数组的定义 #define SIZE 5 int array_int[5]; //未声明初始化,默认填零 float array_float[5] = {1.01, 2.23, 3.1 ...