Sklearn train_test_split在2d向量上失败

时间:2018-04-24 22:05:50

标签: python scikit-learn

import sklearn.model_selection as skl_ms
import numpy as np

A = np.random.normal(0, 1, [1, 100]);
(A_train, A_test) = skl_ms.train_test_split(A);
A_train.shape #--> Answer is (0, 100)
A_test.shape #---> Answer is (1, 100)

呃......这是想要的功能吗?我甚至不理解为什么numpy允许第一维存在0的数组。

Numpy 1.14.2,sklearn 0.19.1,python 3.5.5

1 个答案:

答案 0 :(得分:1)

定义数据集时,变量以列和行中的观察结果表示。因此,如果您有三个独立变量,一个因变量和20个测量值,您的数据集将表示为20 x 4矩阵 - 即20行和4列。默认情况下,train_test_split将数据集拆分为0.75分的测量值作为训练集,0.25分数作为测试集。对于具有20 x 4数据集的示例,分割将是15 x 4用于训练,5 x 4用于测试。至于你的代码,如果尺寸颠倒了会发生什么:

import sklearn.model_selection as skl_ms
import numpy as np

A = np.random.normal(0, 1, [100, 1]);
(A_train, A_test) = skl_ms.train_test_split(A);

A_train.shape
Out[105]: (75, 1)

A_test.shape
Out[106]: (25, 1)