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

时间:2018-03-01 16:38:13

标签: python arrays numpy scikit-learn

我需要将数据集拆分为训练和测试。 我需要最后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.

由于

2 个答案:

答案 0 :(得分: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 :(得分: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,那么>分层必须为None。

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