当我们要做电话调查的时候,为了提高我们的准确性,我们应该尽可能地还原真实数据中各个不同种类所占的比例,比如说男性女性的比例,各个收入阶层的比例等等.
而为了确保机器学习的test_set能安比例取到各种数据,我们就应该对数据进行分组取.
首先先用pt.cut函数处理date_set.
假设我们有一个叫housing的数据集
当我们要做电话调查的时候,为了提高我们的准确性,我们应该尽可能地还原真实数据中各个不同种类所占的比例,比如说男性女性的比例,各个收入阶层的比例等等.
而为了确保机器学习的test_set能安比例取到各种数据,我们就应该对数据进行分组取.
首先先用pt.cut函数处理date_set.
假设我们有一个叫housing的数据集

median_incom median_price
2.3 18040
1.2 20030
0.2 12800
3.2 18030
4.2 18010
housing["income_cat"]=pd.cut(housing["median_income"],bins=[0.,1.5,3.0,4.5,6.,np.inf],labels=[1,2,3,4,5])

这个代码的作用就是把housing这组数据集按照median_income这个参数分成0~1.5, 1.5~3.0, 3.0~4.5, 4.5~6这几组.
这时,数据集就变成了

median_incom median_price income_cut
2.3 18040 3
1.2 20030 1.5
0.2 12800 0.5
3.2 18030 3.5
4.2 18010 4.5

这个过程相当于给数据组加了一个标签.下面就要用StratifiedShuffleSplit函数进行分割
用法:

from  sklearn.model_selection import StratifiedShuffleSplit
StratifiedShuffleSplit(n_splits=10,test_size=None,train_size=None,random_state=None)

其中

参数
n_splits是将训练数据分成train/test对的组数,可根据需要进行设置,默认为10

参数test_size和train_size是用来设置train/test对中train和test所占的比例。例如:
1.提供10个数据num进行训练和测试集划分
2.设置train_size=0.8 test_size=0.2
3.train_num=numtrain_size=8 test_num=numtest_size=2
4.即10个数据,进行划分以后8个是训练数据,2个是测试数据
5.random_state控制是将样本随机打乱

用法
1.其产生指定数量的独立的train/test数据集划分数据集划分成n组。
2.首先将样本随机打乱,然后根据设置参数划分出train/test对。
3.其创建的每一组划分将保证每组类比比例相同。即第一组训练数据类别比例为2:1,则后面每组类别都满足这个比例

from sklearn.model_selection import StratifiedShuffleSplit
split=StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
for train_index, test_index in split.split(housing, housing["income_cat"]):
strat_train_set = housing.loc[train_index]
strat_test_set = housing.loc[test_index]

对于.spilt这个函数

split(self, X, y, groups=None)

其中
x是要分的数组
y是x中的一个label,函数通过y的分布来保证取得的test_set和train_set中y的分布和data_set中y的分布一致.
对于这个函数的更专业的代码可以参考

from
sklearn.model_selection import StratifiedShuffleSplit
X = data_all.array([[1, 2], [3, 4], [1, 2], [3, 4],[1, 2],
[3, 4], [1, 2], [3,4],[4,5],[4,5]])
y =data_all.array([0, 0, 1, 1, 0, 0, 1, 1, 2, 2])#赋予上面10个数组label
s=StratifiedShuffleSplit(n_splits=2,test_size=0.25,random_state=42)#分成5组,测试比例为0.25
for train_index, test_index in ss.split(X, y):
print("TRAIN_INDEX:",train_index, "TEST_INDEX:", test_index)#获得索引
X_train, X_test = X[train_index],X[test_index]#训练集对应的值
y_train, y_test = y[train_index],y[test_index]#类别集对应的值
print("X_train:",X_train)
print("y_train:",y_train)运行结果:TRAIN_INDEX:
[3 9 1 7 2 0 4] TEST_INDEX: [5 6 8]X_train:
[[3 4][4 5][3 4][3 4][1 2][1 2][1 2]]y_train:
[1 2 0 1 1 0 0]TRAIN_INDEX:
[8 5 0 7 6 2 4] TEST_INDEX: [3 1 9]X_train:
[[4 5][3 4][1 2][3 4][1 2][1 2][1 2]]y_train: [2 0 0 1 1 1 0]

上述代码参考
对于这个函数的更多用法可以参考使用手册

最后,当我们分类完成之后,要用函数

for set_in (strat_train_set, strat_test_set):
set_.drop("income_cat", axis=1, inplace=True)

去除income_cat这个feature以保证数据跟原先的数据结构一致.

机器学习实战(基于scikit-learn和TensorFlow)学习心得(5)--stratified sampling相关推荐

  1. 机器学习实战:基于Scikit-Learn.Keras和TensorFlow(原书第2版) 奥雷利安·杰龙——环境搭建anaconda

    这个学期开了一门课,机器学习 然后实验部分用的是这本教材:机器学习实战:基于Scikit-Learn.Keras和TensorFlow 奥雷利安·杰龙,第几版的就不知道了. 用最新的机器学习库,一定会 ...

  2. 机器学习实战笔记(Python实现)-01-机器学习实战

    今天发布一篇图片博客,看一下效果如何,如果效果,以后的博客尽量发图片上来. 机器学习实战 本博客来自于CSDN:http://blog.csdn.net/niuwei22007/article/det ...

  3. php 项目反应理论,科学网—好文 | 纽约石溪大学:机器学习中基于项目反应理论的集成学习 - 陈培颖的博文...

    机器学习中,研究者们对分类集成的关注与日俱增,尤其关注分类精度的提升.IJAC近期发表了来自纽约石溪大学研究者的最新成果,该研究基于项目反应理论,提出一种加权投票方法---基于IRT理论的集成学习算法 ...

  4. 机器学习实战 基于_机器学习实战:基于Scikit-Learn和TensorFlow—第四章笔记

    机器学习实战:基于Scikit-Learn和TensorFlow---第四章笔记 一.学习目标 之前用了那么多的机器学习的模型,但是它们各自的训练算法在很大程度上还是一个黑匣子,我们对对系统内部的实现 ...

  5. 机器学习实战 基于_[编程]-机器学习实战-概览

    * 参考教程... ** 机器学习实战 handson-ml... ** 吴恩达机器学习... ** d2l.ai... * 机器学习概览... ** 什么是机器学习?... ** 机器学习的分类.. ...

  6. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别

    之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...

  7. O‘relly 机器学习实战 基于Scikit-learn 、Keras和Tensorflow 学习记录-第一章

    @[TOC](这里写自定义目录标题) #第一章 机器学习概述 案例1.1: 使用Scikit-learn 训练并运行一个线性模型 import matplotlib.pyplot as plt imp ...

  8. 机器学习实战 基于_基于ScikitLearn、Keras和TensorFlow的机器学习实战:分类

    本文讲解Aurélien Géron所著的<Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow>的第一部分 ...

  9. 机器学习训练营-基于XGBoost的分类预测学习笔记

    文章目录 前言 一.学习知识点概要 二.学习内容 1 XGBoost的应用及优缺点 1.1 XGBoost的应用 1.2 XGBoost的优缺点 2 基于天气数据集的XGBoost分类实战 2.1 目 ...

  10. scikit learn、tensorflow、keras区别

    参考:简书-刘敬:https://www.jianshu.com/p/0837b7c6ce10,感谢 一. 功能不同 Scikit-learn(sklearn)的定位是通用机器学习库 TensorFl ...

最新文章

  1. 存在量词后必须用合取式?-数学
  2. 半导体产业格局:行稳而致远,强者将恒强
  3. Cutting Sticks UVA - 10003
  4. php画中画,画中画功能 怎么将两个视频叠加播放,制作成画中画效果
  5. scala for循环
  6. Docker_DockerFile
  7. Windows版Qt
  8. org.apache.flink.table.catalog.exceptions.CatalogException: Failed to create Hive Metastore client
  9. [HDOJ5573]Binary Tree(找规律,贪心)
  10. python word
  11. 《AI 3.0》作者梅拉妮·米歇尔:今天的机器距离真正像人一样理解世界还有多远...
  12. chrome查看md文件
  13. python正则表达式操作指南_比较详细Python正则表达式操作指南(re使用)
  14. 全国哀悼日,网站变黑白完美兼容IE,亲测有效
  15. 只需要10秒,使用PPT给证件照换底色
  16. python统计元音字母个数_python统计并输出字符串中小写元音字母的个数?
  17. 清明祭曾祖@20130402
  18. 男人怎么读 萨瓦迪卡!还是萨瓦迪卡不!
  19. 【VS消除警告】VS消除特定警告/安全函数警告C4996 strncpy unsafe……
  20. 技术支持和测试的区别_软件测试与开发岗位,哪个更适合你?

热门文章

  1. 51单片机延时程序的理解
  2. mqtt 传文件断开连接的原因_MQTT系列 | MQTT的连接和断开
  3. 机房收费系统之思想性总结
  4. 社区角色(Kubernetes社区Maintainer是什么角色?)
  5. 产品经理学习笔记2 长尾理论
  6. java实现微信企业付款到银行卡_java实现微信企业付款到个人
  7. 中央处理器cpu中的什么是计算机的指挥中,计算机中央处理器CPU的组成有哪些
  8. 51单片机入学第八课——8*8点阵屏
  9. android雪花飘落动画,Android自定义View——从零开始实现雪花飘落效果
  10. Exception in thread “main“ redis.clients.jedis.exceptions.JedisConnectionException: Failed to create