Sklearn弹性网逻辑回归(SGDClassifier)不返回概率

时间:2017-07-27 17:25:16

标签: scikit-learn logistic-regression

在sklearn中,当使用SGDCLassifier进行弹性网络逻辑回归时,predict_proba函数返回与predict函数相同的内容。

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])

如何获得概率值?

1 个答案:

答案 0 :(得分:2)

似乎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可以正常工作。