在sklearn中,当使用SGDCLassifier进行弹性网络逻辑回归时,predict_proba
函数返回与predict
函数相同的内容。
AKA下面的代码(分别使用X
和y
预测变量和二进制标签)返回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 :(得分: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可以正常工作。