为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2021-05-14 18:14:04
假设X1和X2是2个熊猫数据框,它们具有相同的列,但顺序可能不同。假设模型是某种sklearn模型,例如LassoCV。说我做model.fit(X1, y),然后model.predict(X2)。列以不同顺序排列是一个问题,还是模型为列名减轻了权重?此外,同样的问题,但如果X1和X2和numpy的阵列?
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

是的,我相信这很重要,因为sklearn它将pandasDataFrame转换为值数组(本质上是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



查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信