2017-07-27 334 views
0

在sklearn中,當使用SGDCLassifier進行彈性網絡邏輯迴歸時,predict_proba函數返回與predict函數相同的結果。Sklearn彈性網絡邏輯迴歸(SGDClassifier)沒有返回概率

AKA下面的代碼(具有Xy預測器和分別二進制標記)返回True

EN = sklearn.linear_model.SGDClassifier(loss='log', penalty='elasticnet', 
             alpha=0.0001, l1_ratio=0.15) 
EN.fit(X[train], y[train]) 
numpy.all(EN.predict(X[test]) == EN.predict_proba(X[test])[:,1]) 

如何獲取概率值?

+0

你有什麼版本的sklearn? – sera

+0

sklearn .__ version__:0.18 – michael

+0

您是否可以更新到0.18.2並查看問題是否仍然存在? – sera

回答

0

似乎sklearn版本是問題。您需要升級到0.18.2。

實施例使用虹膜數據:

from sklearn.datasets import load_iris 
from sklearn.linear import model.SGDClassifier 
from sklearn.model_selection import train_test_split 
import numpy 
import sklearn 

data = load_iris() 
x = data.data 
y = data.target 
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 42) 

EN = SGDClassifier(loss='log', penalty='elasticnet', alpha=0.0001, l1_ratio=0.15) 

EN.fit(X_train, y_train) 

numpy.all(EN.predict(X_test) == EN.predict_proba(X_test)[:,1]) 
sklearn.__version__ 

結果

False 

'0.18.2' 

因此,與sklearn 0.18.2它工作正常。

+0

我會盡快檢查並回復您,非常感謝! – michael

+0

@ michael肯定。讓我知道如果你解決了你的問題 – sera

+0

[prediction_proba](http://scikit-learn.org/0.17/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier.predict_proba)方法也存在在版本0.17和0.18。所以我懷疑這是否是一個問題。 @ michael可以發佈完整的代碼和數據。 –