假设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
添加回答
举报
0/150
提交
取消