簡體   English   中英

Sklearn擬合vs預測,列的順序很重要?

[英]Sklearn fit vs predict, order of columns matters?

假設X1X2是具有相同列的2個pandas數據幀,但可能以不同的順序排列。 假設模型是某種sklearn模型,如LassoCV。 假設我做model.fit(X1, y) ,然后是model.predict(X2) 事實上列是不同的順序是一個問題,還是模型保存權重我的列名?

另外,同樣的問題,但是如果X1X2以及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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM