如何在sklearn中获得一个非混洗的train_test_split

新手上路,请多包涵

如果我想要随机训练/测试拆分,我使用 sklearn 辅助函数:

 In [1]: from sklearn.model_selection import train_test_split
   ...: train_test_split([1,2,3,4,5,6])
   ...:
Out[1]: [[1, 6, 4, 2], [5, 3]]

获得非混洗训练/测试拆分的最简洁方法是什么,即

[[1,2,3,4], [5,6]]

编辑 目前我正在使用

train, test = data[:int(len(data) * 0.75)], data[int(len(data) * 0.75):]

但希望有更好的东西。我在 sklearn 上开了一个问题 https://github.com/scikit-learn/scikit-learn/issues/8844

编辑 2: 我的 PR 已合并,在 scikit-learn 版本 0.19 中,您可以将参数 shuffle=False 传递给 train_test_split 以获得非随机拆分。

原文由 maxymoo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 356
1 个回答

除了易于复制粘贴功能外,我并没有对 Psidom 的答案添加太多内容:

 def non_shuffling_train_test_split(X, y, test_size=0.2):
    i = int((1 - test_size) * X.shape[0]) + 1
    X_train, X_test = np.split(X, [i])
    y_train, y_test = np.split(y, [i])
    return X_train, X_test, y_train, y_test

更新:在某些时候,此功能已内置,因此现在您可以:

 from sklearn.model_selection import train_test_split
train_test_split(X, y, test_size=0.2, shuffle=False)

原文由 Anake 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题