如何在Python中将数据集拆分为训练集、测试集和验证集?

7 浏览
0 Comments

如何在Python中将数据集拆分为训练集、测试集和验证集?

我有一个像这样的数据集

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)

结果只是将数据分割成了测试集和训练集。我希望将它分成三个随机化的数据集。

期望结果:

测试集、训练集、验证集

0
0 Comments

在机器学习中,将原始数据集分为训练集、测试集和验证集是一个常见的操作。训练集用于训练模型,测试集用于评估模型在未见过的数据上的性能,而验证集用于调整模型的超参数和进行模型选择。

Python中有一个便捷的方法可以实现数据集的划分,即使用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)

上述代码首先使用train_test_split函数将原始数据集X和y按照test_size参数指定的比例划分为训练集X_train和y_train,测试集X_test和y_test。然后再次使用train_test_split函数将训练集X_train和y_train按照test_size参数指定的比例划分为训练集X_train和y_train,验证集X_val和y_val。

通过这种方式,我们可以将原始数据集划分为三个部分,分别用于训练、测试和验证模型。其中,训练集用于训练模型的参数,测试集用于评估模型的性能,验证集用于调整模型的超参数和进行模型选择。

如果想要了解更多关于这个问题的解决方法,可以参考这里

0
0 Comments

在Python中,将数据集划分为训练集、测试集和验证集是一个常见的任务。例如,我们可能希望使用60%的数据作为训练集,20%作为测试集,另外20%作为验证集。本文将介绍这个问题的原因以及解决方法。

问题的原因是代码中出现了错误信息“'list' object has no attribute 'sample'”,这是因为变量my_data是一个列表对象,而不是一个DataFrame对象。

解决这个问题的方法是将my_data转换为pandas的DataFrame对象。可以使用pandas库的DataFrame函数将列表转换为DataFrame。下面是用numpy和pandas库实现数据集划分的代码示例:

import numpy as np
import pandas as pd
train_size = 0.6
validate_size = 0.2
# 将列表转换为DataFrame
my_data = pd.DataFrame(my_data)
# 划分数据集
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转换为DataFrame对象,我们可以成功地划分数据集为训练集、测试集和验证集。在上面的代码中,使用sample函数对数据进行随机抽样,frac参数指定抽样的比例。np.split函数根据指定的比例将数据划分为三部分,分别赋值给train、validate和test变量。

总结一下,解决这个问题的方法是将列表转换为pandas的DataFrame对象。然后,使用numpy和pandas库的函数将数据集划分为训练集、测试集和验证集。这样我们就可以在Python中轻松地完成数据集的划分任务。

0