我需要将我的数据集拆分为训练和测试。我需要最后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.
谢谢
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
助手的内部选项,这些代码读者可能没有经验。
我认为这个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。
如果我没有正确理解你的问题,请告诉我