我是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新生,对不起。
答案 0 :(得分:0)
这是完全可以预期的,当您运行分类器或回归时,您始终具有输入功能:X
,它们提供了输出y
:X --> 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