• 数据集划分——train_test_split函数使用说明


    当我们拿到数据集时,首先需要对数据集进行划分训练集和测试集,sklearn提供了相应的函数供我们使用

    一、讲解

    快速随机划分数据集,可自定义比例进行划分训练集和测试集

    二、官网API

    官网API

    sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
    
    • 1

    导包:from sklearn.model_selection import train_test_split

    为了方便说明,这里以一个具体的案例进行分析
    织物起球等级评定,已知织物起球个数N、织物起球总面积S、织物起球最大面积Max_s、织物起球平均面积Aver_s、对比度C、光学体积V这六个特征参数来确定最终的织物起球等级Grade

    说白了:六个特征(N、S、Max_s、Aver_s、C、V),来确定最终的等级(Grade)
    数据集可以自己简单整个,csv格式即可,我这里使用的是6个自变量X和1个因变量Y
    在这里插入图片描述

    参数:

    ①*arrays

    传入因变量和自变量
    这里的因变量为六个特征(N、S、Max_s、Aver_s、C、V)
    自变量为最终评定的等级(Grade)

    具体官网详情如下:
    在这里插入图片描述

    ②test_size

    若给该参数传入float浮点数,则范围为[0.0,1.0],表示测试集的比例
    若给该参数传入int整型数,则表示测试集样本的具体数量
    若为None,则设置为train_size参数的补数形式

    若该test_size参数和train_size参数的值均为None,则该test_size设置为0.25,按float浮点型对待

    具体官网详情如下:
    在这里插入图片描述

    ③train_size

    若给该参数传入float浮点数,则范围为[0.0,1.0],表示训练集的比例
    若给该参数传入int整型数,则表示训练集样本的具体数量
    若为None,则设置为test_size参数的补数形式
    该参数跟test_size类似

    具体官网详情如下:
    在这里插入图片描述

    ④random_state

    随机种子random_state,如果要是为了对比,需要控制变量的话,这里的随机种子最好设置为同一个整型数

    具体官网详情如下:
    在这里插入图片描述

    ⑤shuffle

    是否在分割前对数据进行洗牌
    如果 shuffle=False 则 stratify 必须为 None

    具体官网详情如下:
    在这里插入图片描述

    ⑥stratify

    如果不是 “None”,数据将以分层方式分割,并以此作为类别标签

    具体官网详情如下:
    在这里插入图片描述

    返回值:

    splitting

    返回一个包含训练和测试分割之后的列表

    具体官网详情如下:
    在这里插入图片描述

    三、项目实战

    ①导包

    若导入过程报错,pip安装即可

    import numpy as np
    import pandas as pd 
    import matplotlib.pyplot as plt
    %matplotlib inline
    from sklearn.model_selection import train_test_split
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ②加载数据集

    数据集可以自己简单整个,csv格式即可,我这里使用的是6个自变量X和1个因变量Y
    在这里插入图片描述
    通过pandas读入文本数据集,展示前五行数据

    fiber = pd.read_csv("./fiber.csv")
    fiber.head(5) #展示下头5条数据信息
    
    • 1
    • 2

    在这里插入图片描述

    ③划分数据集

    前六列是自变量X,最后一列是因变量Y

    参数:
    test_size:测试集数据所占比例,这里是0.25,表示测试集占总数据集的25%
    train_size:训练集数据所占比例,这里是0.75,表示训练集占总数据集的75%
    random_state:随机种子,为了控制变量
    shuffle:是否将数据进行打乱
    因为我这里的数据集共48个,训练集0.75,测试集0.25,即训练集36个,测试集12个

    返回值:
    依此返回四个list,分别为训练集的自变量、测试集的自变量、训练集的因变量和测试集的因变量,分别通过X_train, X_test, y_train, y_test进行接收

    X = fiber.drop(['Grade'], axis=1)
    Y = fiber['Grade']
    
    X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)
    
    print(X_train.shape) #(36,6)
    print(y_train.shape) #(36,)
    print(X_test.shape) #(12,6)
    print(y_test.shape) #(12,)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    根据返回的四个list的shape可以看到数据集已经成功按自定义需求划分

    ⑤完整代码

    import numpy as np
    import pandas as pd 
    import matplotlib.pyplot as plt
    %matplotlib inline
    from sklearn.model_selection import train_test_split
    
    fiber = pd.read_csv("./fiber.csv")
    fiber.head(5) #展示下头5条数据信息
    
    X = fiber.drop(['Grade'], axis=1)
    Y = fiber['Grade']
    
    X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)
    
    print(X_train.shape) #(36,6)
    print(y_train.shape) #(36,)
    print(X_test.shape) #(12,6)
    print(y_test.shape) #(12,)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    Spring Boot的创建和使用(JavaEE进阶系列2)
    阿里云服务器添加安全组和防火墙规则
    C#简单晶圆wafermapping显示示范demo
    XML详解--语法、DTD、schema
    (王道408考研操作系统)第一章计算机系统概述-第五、六节:操作系统引导和虚拟机
    李炎恢ECMAScript6 / ES6+(二)
    Kotlin 位运算
    消息队列-kafka-服务端处理架构(架构,Topic文件结构,服务端数据的一致性)
    基于springboot的少儿识字系统
    隗华:OceanBase 企业服务助力客户实现业务无忧
  • 原文地址:https://blog.csdn.net/qq_41264055/article/details/133436923