2017-07-27 333 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可以发布完整的代码和数据。 –