[英]Sklearn fit vs predict, order of columns matters?
假設X1
和X2
是具有相同列的2個pandas數據幀,但可能以不同的順序排列。 假設模型是某種sklearn
模型,如LassoCV。 假設我做model.fit(X1, y)
,然后是model.predict(X2)
。 事實上列是不同的順序是一個問題,還是模型保存權重我的列名?
另外,同樣的問題,但是如果X1
和X2
以及numpy數組呢?
是的,我相信這很重要,因為sklearn
會將pandas
DataFrame轉換為值數組(本質上是調用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.