【问题标题】:Splitting data set into training and test data, keeping the ratio将数据集拆分为训练和测试数据,保持比例
【发布时间】:2019-03-07 16:45:01
【问题描述】:

我有 Iris 数据集(可在此处找到:https://www.kaggle.com/uciml/iris),我应该将其分为测试集和训练集。但是,我需要对其进行拆分,以便训练和测试集中的类分布与完整数据集中的类分布相同。

我已经看到了这个问题的最佳答案:how to split a dataset into training and validation set keeping ratio between classes?,但由于我对数据科学和 python 都是新手,所以我很迷茫。

对于 Iris 数据集,前 50 行是一种花,接下来的 50 行是第二种花,最后 50 行是第三种花。我该怎么写才能得到例如。每三分之一的 50% 测试数据?我真的不明白他们在上面链接的问题中是在哪里以及如何做到这一点的。如果您能像对孩子一样解释这一点,我将不胜感激。

x_train 代表花的 4 个不同特征,而 y_train 代表我们拥有的花的种类?

提前谢谢你!

编辑:我试过这个

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.5, random_state=65)

但这是一种公平的方式吗?我选择了不同数量的随机状态,直到我在测试和训练集中得到了每种花的 25 个(它总是在 1/3 左右,但我得到了 65 个)。这感觉有点像作弊……

【问题讨论】:

    标签: split dataset data-science python-iris iris-dataset


    【解决方案1】:

    【讨论】:

    • 非常感谢,stratify 参数正是我想要的!
    【解决方案2】:

    sklearn.model_selection.train_test_split

    具有shufflestratify 参数。

    对于默认的shuffle = Truestratify=None

    如果您正在处理回归,train_test_split 默认会为您打乱数据。

    如果是分类处理,需要指定stratify = << your response variable >>

    更多信息请查看documentation

    谢谢

    【讨论】:

      猜你喜欢
      • 2022-12-24
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2019-12-15
      • 2018-01-01
      相关资源
      最近更新 更多