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

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

此外,同样的问题,但如果X1X2和numpy的阵列?


不负相思意
浏览 229回答 1
1回答

繁星coding

是的,我相信这很重要,因为sklearn它将pandasDataFrame转换为值数组(本质上是X1.values),而不是注意列名。但是,这很容易解决。只需使用:X2 = X2[X1.columns]并将X2的列重新排序为与列相同的顺序。X1numpy当然,数组也是如此,因为它将使模型适合列中的模型X1,因此当您预测时X2,它将仅基于列中的顺序进行预测。X1范例:采取以下两个数据帧:>>> X1   a  b0  1  51  2  62  3  7>>> X2   b  a0  5  31  4  22  6  1该模型适用于X1.values:array([[1, 5],       [2, 6],       [3, 7]])而您预测X2.values:>>> X2.valuesarray([[5, 3],       [4, 2],       [6, 1]])模型无法知道列已切换。因此,请手动切换它们:X2 = X2[X1.columns]>>> X2   a  b0  3  51  2  42  1  6
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python