0

我有两个数据集,分别是测试和训练。我将它们收集在一个 csv 中。我想拆分我的数据以进行训练和测试。但它不应该是随机的。我需要拆分火车的前 808699 行,其余的行作为测试?

我试图阅读两个不同的 csv 但我不能。

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=808698,test_size=121918,random_state=1)
ValueError: train_size=808698 should be either positive and smaller than the number of samples 121921 or a float in the (0, 1) range
4

3 回答 3

2

最简单的方法是使用 train_test_split(sklearn 模块)将 shuffle 设置为 False。Shuffle 优先于 random_state 参数。因此,如果将 shuffle 设置为 FALSE,则数据集中的前 n 个观察值(即 90 行)将进入训练数据集,最后 10 行将进入测试数据集。您的代码将是:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=121918/930616, shuffle=False)
于 2021-06-08T20:50:20.873 回答
0

如果您有一个 df,请使用iloc根据您的需要拆分它们:

df = pd.read_csv('...')
train = df.iloc[:808699]
test = df.iloc[808699:]
于 2019-08-20T09:31:57.570 回答
0

首先,当您阅读训练和测试文件时,请分别检查它们的形状。

train/test.shape 应该以这种格式为您提供输出:(数据点总数,特征总数)

火车的形状应该是 (x,y)
测试的形状应该是 (x1,y)
组合数据集的最终形状应该是 ((x+x1),y)

这样做是为了组合它们:train.append(test)

最后,您可以根据组合数据帧的大小将它们拆分为 X_train、X_test、y_train、y_test。

于 2019-08-20T09:56:49.550 回答