我对 numpy 很陌生。我需要获取一个数据集并从中创建一个测试集和一个训练集。如果我的数据集是一个 150 行 4 列的 numpy 数组(最后一列是标签),那么使用数据集中的值填充训练和测试数组的正确方法是什么,假设数据集可以不同 - 即,我不想手动编写测试集和训练集的形状?
我想要做的是,提供一个分割值,它将获取一个数据集,并用数据集的行填充测试集和训练集,并根据该值进行分割。
我需要编写一个像这样的方法:
def split(dataset, value, training, test):
training = np.array #this is what I am confused about how to define
test = np.array
if random.random() < value:
#this is where I am confused about how to populate the arrays
append rows to training
else:
append rows to test
如果不是出于教育目的,您想手动拆分数据,我建议使用现有的解决方案。这样您就可以确定它是正确的*。 Scikit-learn具有执行各种功能cross-validation或者简单地使用 train_test_split
将数据拆分为训练集和测试集。 :
Split arrays or matrices into random train and test subsets
例如,将数据集拆分为 80 行用于训练,20 行用于测试:
from sklearn.model_selection import train_test_split
x = np.random.randn(100, 5) # generate random data
x_train, x_test = train_test_split(x, train_size=0.8)
print(x_train.shape) # (80, 5)
print(x_test.shape) # (20, 5)
*至少功能会正确实现。它不一定是正确的函数 - 通常有很多方法可以将数据拆分为训练集和测试集。其中一些可能比其他更合适,具体取决于应用程序的具体情况。
我是一名优秀的程序员,十分优秀!