【问题标题】:How to split dataset to train, test and valid in Python? [duplicate]如何拆分数据集以在 Python 中进行训练、测试和验证? [复制]
【发布时间】:2021-01-08 06:03:12
【问题描述】:

我有一个这样的数据集

my_data= [['Manchester', '23', '80', 'CM',
  'Manchester', '22', '79', 'RM',
  'Manchester', '19', '76', 'LB'],
 ['Benfica', '26', '77', 'CF',
  'Benfica', '22', '74', 'CDM',
  'Benfica', '17', '70', 'RB'],
 ['Dortmund', '24', '75', 'CM',
  'Dortmund', '18', '74', 'AM',
  'Dortmund', '16', '69', 'LM']
]

我知道使用 sklearn.cross_validation 中的 train_test_split,我已经尝试过

from sklearn.model_selection import train_test_split
train, test = train_test_split(my_data, test_size = 0.2)

结果只是分为测试和训练。我希望将其分成 3 个独立的随机数据集。

预期: 测试、训练、有效

【问题讨论】:

  • train_test_split 将您的数据分为训练集和验证集。不要被名字所迷惑。 Test data 应该是你不知道你的输出变量的地方。

标签: python scikit-learn train-test-split


【解决方案1】:

可以使用numpy+pandas来实现,拆分0.6 + 0.2 + 0.2下面的脚本见:

train_size = 0.6
validate_size = 0.2
train, validate, test = np.split(my_data.sample(frac=1), [int(train_size * len(my_data)), int((validate_size + train_size) * len(my_data))])

【讨论】:

  • 我收到错误“列表”对象没有属性“样本”
  • my_data 应该是 pandas DataFrame。
【解决方案2】:

你可以简单地使用 train_test split 两次

X_train, X_test, y_train, y_test 
    = train_test_split(X, y, test_size=0.2, random_state=1)

 X_train, X_val, y_train, y_val 
    = train_test_split(X_train, y_train, test_size=0.25, random_state=1)

另外,可以在here找到答案

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2016-05-12
    • 2023-02-12
    • 2019-03-15
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2016-07-04
    相关资源
    最近更新 更多