Sklearn拟合与预测,列顺序重要吗?

时间:2018-08-02 22:40:25

标签: python machine-learning scikit-learn

letX1是2个熊猫数据帧,具有相同的列,但顺序可能不同。假设模型是某种X2模型,例如LassoCV。假设我先sklearn,然后再model.fit(X1, y)。列以不同顺序排列是一个问题,还是模型为列名减轻了权重?

同样的问题,但是如果model.predict(X2)X1以及numpy数组怎么办?

1 个答案:

答案 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