如何在没有train_test_split()的情况下拆分数据集?

问题描述 投票:0回答:2

我需要将我的数据集拆分为训练和测试。我需要最后20%的测试值和前80%的培训值。我目前使用'train_test_split()',但它随机选取数据而不是最后的20%。如何获得最后20%的测试和前80%的培训?我的代码如下:

numpy_array = df.as_matrix()
X = numpy_array[:, 1:26]
y = numpy_array[:, 0]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=20) #I do not want the data to be random.

谢谢

python arrays numpy scikit-learn
2个回答
1
投票
train_pct_index = int(0.8 * len(X))
X_train, X_test = X[:train_pct_index], X[train_pct_index:]
y_train, y_test = y[:train_pct_index], y[train_pct_index:]

这是其中一种情况,最好不要让sklearn助手参与其中。非常简单,可读,并且不依赖于了解sklearn助手的内部选项,这些代码读者可能没有经验。


1
投票

我认为这个Stackoverflow主题回答了你的问题:

How to get a non-shuffled train_test_split in sklearn

特别是这段文字:

在scikit-learn版本0.19中,您可以将参数shuffle = False传递给train_test_split以获得非混乱分割。

从文档:

shuffle:boolean,optional(default = True)

是否在拆分之前对数据进行混洗。如果shuffle = False,则> stratify必须为None。

如果我没有正确理解你的问题,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.