说let
和X1
是2个熊猫数据帧,具有相同的列,但顺序可能不同。假设模型是某种X2
模型,例如LassoCV。假设我先sklearn
,然后再model.fit(X1, y)
。列以不同顺序排列是一个问题,还是模型为列名减轻了权重?
同样的问题,但是如果model.predict(X2)
和X1
以及numpy数组怎么办?
答案 0 :(得分:5)
是的,我相信这很重要,因为sklearn
会将pandas
DataFrame转换为值的数组(本质上称为X1.values
),而不关注列名。但是,这很容易解决。只需使用:
X2 = X2[X1.columns]
它将X2
的列重新排序为与X1
相同的顺序
当然,numpy
数组也是如此,因为它将使模型适合X1
中的列,因此当您预测X2
时,它将只是根据X1
示例:
采用这两个数据框:
>>> X1
a b
0 1 5
1 2 6
2 3 7
>>> X2
b a
0 5 3
1 4 2
2 6 1
该模型适合X1.values
:
array([[1, 5],
[2, 6],
[3, 7]])
您预测X2.values
:
>>> X2.values
array([[5, 3],
[4, 2],
[6, 1]])
该模型无法知道列已切换。因此,请手动切换它们:
X2 = X2[X1.columns]
>>> X2
a b
0 3 5
1 2 4
2 1 6