对python中数据集划分函数StratifiedShuffleSplit的使用详解

 更新时间:2018年12月11日 14:29:58   作者:冻鸡hhhh  
今天小编就为大家分享一篇对python中数据集划分函数StratifiedShuffleSplit的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

文章开始先讲下交叉验证,这个概念同样适用于这个划分函数

1.交叉验证(Cross-validation)

交叉验证是指在给定的建模样本中,拿出其中的大部分样本进行模型训练,生成模型,留小部分样本用刚建立的模型进行预测,并求这小部分样本的预测误差,记录它们的平方加和。这个过程一直进行,直到所有的样本都被预测了一次而且仅被预测一次,比较每组的预测误差,选取误差最小的那一组作为训练模型。

下图所示

python StratifiedShuffleSplit的使用

2.StratifiedShuffleSplit函数的使用

官方文档

用法:

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

2.1 参数说明

参数 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=num*train_size=8 test_num=num*test_size=2

4.即10个数据,进行划分以后8个是训练数据,2个是测试数据

注*:train_num≥2,test_num≥2 ;test_size+train_size可以小于1*

参数 random_state控制是将样本随机打乱

2.2 函数作用描述

1.其产生指定数量的独立的train/test数据集划分数据集划分成n组。

2.首先将样本随机打乱,然后根据设置参数划分出train/test对。

3.其创建的每一组划分将保证每组类比比例相同。即第一组训练数据类别比例为2:1,则后面每组类别都满足这个比例

2.3 具体实现

from sklearn.model_selection import StratifiedShuffleSplit
import numpy as np
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],
 [1, 2],[3, 4], [1, 2], [3, 4]])#训练数据集8*2
y = np.array([0, 0, 1, 1,0,0,1,1])#类别数据集8*1

ss=StratifiedShuffleSplit(n_splits=5,test_size=0.25,train_size=0.75,random_state=0)#分成5组,测试比例为0.25,训练比例是0.75

for train_index, test_index in ss.split(X, y):
 print("TRAIN:", train_index, "TEST:", test_index)#获得索引值
 X_train, X_test = X[train_index], X[test_index]#训练集对应的值
 y_train, y_test = y[train_index], y[test_index]#类别集对应的值

运行结果:

python StratifiedShuffleSplit的使用

从结果看出,1.训练集是6个,测试集是2,与设置的所对应;2.五组中每组对应的类别比例相同

以上这篇对python中数据集划分函数StratifiedShuffleSplit的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 从0开始的Python学习014面向对象编程(推荐)

    从0开始的Python学习014面向对象编程(推荐)

    这篇文章主要介绍了Python面向对象编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • python安装教程 Pycharm安装详细教程

    python安装教程 Pycharm安装详细教程

    这篇文章主要介绍了python的安装教程,和Pycharm的安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • python如何实现数组反转

    python如何实现数组反转

    这篇文章主要介绍了python如何实现数组反转问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 用Python手把手教你实现2048小游戏

    用Python手把手教你实现2048小游戏

    感觉好久没和大家一起写小游戏玩了,今天恰巧有空.这次我们来用Python做个2048小游戏吧.废话不多说,文中有非常详细的代码示例,需要的朋友可以参考下
    2021-06-06
  • python matplotlib.pyplot.plot()参数用法

    python matplotlib.pyplot.plot()参数用法

    这篇文章主要介绍了python matplotlib.pyplot.plot()参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 使用 Python 玩转 GitHub 的贡献板(推荐)

    使用 Python 玩转 GitHub 的贡献板(推荐)

    这篇文章主要介绍了使用 Python 玩转 GitHub 的贡献板的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 浅谈Python类的单继承相关知识

    浅谈Python类的单继承相关知识

    本文给大家介绍面向对象三要素之一继承Inheritance的相关知识,通过示例代码给大家介绍了继承、猫类、狗类不用写代码,直接继承了父类的属性和方法,具体实现代码跟随小编一起看看吧
    2021-05-05
  • python 操作sqlite数据库的方法

    python 操作sqlite数据库的方法

    sqlite的官网 sqlite.org/index.html SQLite 作为一个SQL数据库引擎,是由C语言实现的,又小又快,具有高可靠性且功能齐全。 作为嵌入式数据库,在移动设备中使用非常广泛且方便。本文讲解如何使用python操作sqlite数据库
    2021-06-06
  • 详解Python locals()的陷阱

    详解Python locals()的陷阱

    这篇文章主要介绍了详解Python locals()的陷阱,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Python与数据库的交互问题小结

    Python与数据库的交互问题小结

    这篇文章主要介绍了Python与数据库的交互,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论