Python,train_test_split如何工作?

时间:2019-11-17 16:07:46

标签: python matrix scikit-learn

我是Python的新手,我想知道为什么这段代码如此工作。

train_features, test_features, train_labels, test_labels = train_test_split(
df.drop(labels=[21], axis=1),
df[21],
test_size=0.2,
random_state=37

) 我想进行5次交叉验证。我的df contians矩阵。我不知道为什么在打印每个变量print(train_features) print(test_features) print(train_labels) print(test_labels) 之后 我得到不同格式的数据,因为train_features和test_features是这样的:

1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20

3 2 1 2 2 2 1 1 1 2 ... 1 2 3 2 2 1 3 3 2

395 2 3 2 3 2 1 1 2 1 ... 2 1 1 1 2 3 2 1 1

186 2 3 1 1 2 2 2 2 2 ... 2 1 1 2 2 2 1 1 1

以及train_labels和test_labels之类的东西:

3 1

395 20

186 9

6 1 我的问题是,为什么我在这里得到20列的矩阵,而只有2列的矩阵。 您能解释一下该代码如何工作吗?我是Python新生,对不起。

1 个答案:

答案 0 :(得分:0)

这是完全可以预期的,当您运行分类器或回归时,您始终具有输入功能:X,它们提供了输出yX --> y

在您的情况下,您的输入功能是: train_features, test_features与您的矩阵一起具有21个特征:



train_features = (2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20

                  2 1 2 2 2 1 1 1 2 ... 1 2 3 2 2 1 3 3 2

                  2 3 2 3 2 1 1 2 1 ... 2 1 1 1 2 3 2 1 1

                  2 3 1 1 2 2 2 2 2 ... 2 1 1 2 2 2 1 1 1

和带有一个输出的标签(目标):

train_labels = (1

                20

                9

                1 )

第一列可能是您的行索引。因此,映射为: train_features --> train_labels test_features --> test_labels 形状/尺寸相同的是train_features / test_features和train_labels / test_labels