繁体   English   中英

Sklearn拟合vs预测,列的顺序很重要?

[英]Sklearn fit vs predict, order of columns matters?

假设X1X2是具有相同列的2个pandas数据帧,但可能以不同的顺序排列。 假设模型是某种sklearn模型,如LassoCV。 假设我做model.fit(X1, y) ,然后是model.predict(X2) 事实上列是不同的顺序是一个问题,还是模型保存权重我的列名?

另外,同样的问题,但是如果X1X2以及numpy数组呢?

是的,我相信这很重要,因为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM