博客小梦 2023-11-26 18:24 采纳率: 0%
浏览 12

机器学习,跨个体数据集如何划分

如何实现跨个体的数据集划分,比如有16个人的数据集,将其中一人的数据集作为测试,其余15人数据集做训练集,train_test_split是不是只能做个体内数据集的划分?如果可以,该怎么设置参数哇

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-26 20:54
    关注

    【相关推荐】



    • 这篇文章:机器学习之train_test_split详解 也许能够解决你的问题,你可以看下
    • 除此之外, 这篇博客: 机器学习框架及评估指标详解中的 train_test_split函数的详解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”

      从 sklearn.model_selection 中调用train_test_split 函数

      简单用法如下:

      X_train,X_test, y_train, y_test  =sklearn.model_selection.train_test_split
      (train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)

      train_data:所要划分的样本特征集

      train_target:所要划分的样本结果

      test_size样本占比,如果是整数的话就是样本的数量

      random_state是随机数的种子

      随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

      stratify是为了保持split前类的分布。比如有100个数据,80个属于A类,20个属于B类。

      如果train_test_split(... test_size=0.25, stratify = y_all), 那么split之后数据如下:

      training: 75个数据,其中60个属于A类,15个属于B类

      testing: 25个数据,其中20个属于A类,5个属于B类。

      用了stratify参数,training集和testing集的类的比例是 A:B= 4:1

      等同于split前的比例(80:20)。通常在这种类分布不平衡的情况下会用到stratify。

      将stratify=X就是按照X中的比例分配

      将stratify=y就是按照y中的比例分配

      整体总结起来各个参数的设置及其类型如下:

      主要参数说明:

      *arrays 可以是列表、numpy数组、scipy稀疏矩阵或pandas的数据框

      test_size:可以为浮点、整数或None,默认为None

      ①若为浮点时,表示测试集占总样本的百分比

      ②若为整数时,表示测试样本样本数

      ③若为None时,test size自动设置成0.25

      train_size:可以为浮点、整数或None,默认为None

      ①若为浮点时,表示训练集占总样本的百分比

      ②若为整数时,表示训练样本的样本数

      ③若为None时,train_size自动被设置成0.75

      random_state:可以为整数、RandomState实例或None,默认为None

      ①若为None时,每次生成的数据都是随机,可能不一样

      ②若为整数时,每次生成的数据都相同

      stratify:可以为类似数组或None

      ①若为None时,划分出来的测试集或训练集中,其类标签的比例也是随机的

      ②若不为None时,划分出来的测试集或训练集中,其类标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集

      总之在遇到数据集不平衡的情况下可以使用该参数,来调节数据标签的不平衡的情况,我们可以该参数调节


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月26日