python - Sklearn fit vs predict,列的顺序很重要吗?
问题描述
说是 2X1
个X2
具有相同列的熊猫数据框,但顺序可能不同。假设模型是某种sklearn
模型,例如 LassoCV。说我做model.fit(X1, y)
,然后model.predict(X2)
。列的顺序不同是一个问题,还是模型保存了我的列名?
另外,同样的问题,但是如果X1
和X2
和 numpy 数组呢?
解决方案
是的,我相信这很重要,sklearn
将pandas
DataFrame 转换为值数组(本质上是调用X1.values
),而不是注意列名。但是,这是一个简单的解决方法。只需使用:
X2 = X2[X1.columns]
它会将X2
's 列重新排序为相同的顺序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
推荐阅读
- c# - C# Selenium Firefox 无法将字符串发送到输入;可见但 webElement 值不变
- vue.js - 如何使用模板在 vuetify v-data-table 中获取数组的索引
- nginx - 为什么open / mall总是匹配/在nginx中
- powerbi - Power BI 将列转换为行
- sql - PROC SQL - 满足条件时将数据转换为列
- android - Glide 无法在 Dialog Listview 项 ImageView 项中显示图像 URL
- excel - 看到错误:无法设置列表属性。类型不匹配
- node.js - nodejs中如何在RabbitMQ上设置安全层
- jquery - 在 jquery 中滚动不适用于具有 vh 高度的 div 类
- flutter - 如何摆脱Container的固定宽度和高度引起的错误