我們將sklearn從舊的0.13-git升級到了0.14.1,並發現邏輯迴歸分類器的性能發生了很大變化。用相同數據訓練的兩個分類器具有不同的係數,因此經常給出不同的分類結果。不同版本的sklearn給出了完全不同的訓練結果
作爲一個實驗我用5個數據點(高的尺寸)來訓練分類器LR,結果是:
0.13 GIT中:
clf.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', tol=0.0001)
np.sort(clf.coef_)
array([[-0.12442518, -0.11137502, -0.11137502, ..., 0.05428562,
0.07329358, 0.08178794]])
0.14.1:
clf1.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)
np.sort(clf1.coef_)
array([[-0.11702073, -0.10505662, -0.10505662, ..., 0.05630517,
0.07651478, 0.08534311]])
我想說的差別是相當大的,在10 ^( - 2)的範圍內。很明顯,我在這裏使用的數據並不理想,因爲要素的維度比條目數量要大得多。然而,在實踐中往往也是如此。 它與功能選擇有關嗎?我怎樣才能使結果與以前一樣?我知道新的結果不一定比以前更糟,但現在的重點是儘可能使它們保持一致。 謝謝。
在你的0.13.1中你沒有'random_state = None',這是一個錯字嗎? – EdChum
0.13版本沒有該參數。在0.14.1中,我也嘗試設置random_state = 0,結果與random_state = None相同。 – ymeng
這是值得檢查的文檔,因爲有時在不同版本的錯誤修正 – EdChum