【问题标题】:Difficulty in understanding the outputs of train test and validation data in SkLearn在 SkLearn 中难以理解训练测试和验证数据的输出
【发布时间】:2020-05-20 04:41:46
【问题描述】:

我有一个大约 10k 的数据集,我在 sklearn 的 train_test_split 模块中将数据拆分为 80:20 的比例......但是我无法理解输出与添加时与原始数据集不匹配的原因。例如,这是我使用 df.shape (9538, 15) 创建的数据集的大小。现在,如果我把它放入 train_test_split 我会得到类似的东西

from sklearn.model_selection import train_test_split
train, test =  train_test_split(df_fake,test_size=0.2, random_state=0)
train, val =  train_test_split(df_fake,test_size=0.25,random_state=0)
print('Train-',train.shape)
print('Val-',val.shape)
print('Test-',test.shape)

输出:-

Train- (7153, 15)
Val- (2385, 15)
Test- (1908, 15)

因此,如果我将测试集与验证集添加到 - 4293,当这个数字添加到训练集时,它会变成 11446。而我只有 9.5K 的数据。做错了吗?

【问题讨论】:

标签: python tensorflow scikit-learn


【解决方案1】:

您的问题是您在代码中设置了两次 train 变量并覆盖了它。 Sklearn 的train_test_split 函数将数据分成两部分。所以你的 train + val 数据集加起来是正确的数字。如果要拆分三种方式,请尝试拆分一次,然后再次拆分其中一个结果数据集。如果您要进行 80-10-10 拆分,您需要先削减 20%,然后再将其削减一半:

from sklearn.model_selection import train_test_split
train, tv = train_test_split(df_fake, test_size=0.2, random_state=0)
test, val = train_test_split(tv, test_size=0.5, random_state=0)

【讨论】:

    【解决方案2】:

    你想要更多这样的东西吗:

    train, test_val = train_test_split(df_fake,test_size=0.2, random_state=0)
    test,  val      = train_test_split(test_val,test_size=0.5,random_state=0)
    

    现在您将拥有尺寸为 80/10/10 的 train、test、val。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 2019-02-20
      • 2012-06-04
      • 2020-02-17
      • 2017-08-29
      • 2023-03-12
      • 2023-04-08
      相关资源
      最近更新 更多