Bar*_*ich 5 python machine-learning scikit-learn
假设X1和X2是2个熊猫数据框,它们具有相同的列,但顺序可能不同。假设模型是某种sklearn模型,例如LassoCV。说我做model.fit(X1, y),然后model.predict(X2)。列以不同顺序排列是一个问题,还是模型为列名减轻了权重?
此外,同样的问题,但如果X1和X2和numpy的阵列?
sac*_*cuL 11
是的,我相信这很重要,因为sklearn它将pandasDataFrame 转换为值数组(本质上是X1.values),而不是注意列名。但是,这很容易解决。只需使用:
X2 = X2[X1.columns]
Run Code Online (Sandbox Code Playgroud)
并将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
Run Code Online (Sandbox Code Playgroud)
该模型适用于X1.values:
array([[1, 5],
[2, 6],
[3, 7]])
Run Code Online (Sandbox Code Playgroud)
您可以预测X2.values:
>>> X2.values
array([[5, 3],
[4, 2],
[6, 1]])
Run Code Online (Sandbox Code Playgroud)
模型无法知道列是否已切换。因此,请手动切换它们:
X2 = X2[X1.columns]
>>> X2
a b
0 3 5
1 2 4
2 1 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1509 次 |
| 最近记录: |