Python Scikit-learn感知器输出概率

5
我正在使用scikit-learn的感知器算法进行二元分类。 在使用库中的其他算法(RandomForestClassifer、LogisticRegression等)时,我可以使用model.predict_proba()让算法输出每个示例获得正面(1)概率的结果。是否有一种方法可以获得感知器算法类似的结果输出呢?
我能想到最接近的方法是使用model.decision_function(),它根据到超平面的有符号距离为基础输出示例的置信度分数,但我不确定如何将这些置信度分数转换为我想要的概率数字。 model.predict()仅返回二进制值。
1个回答

3

我认为您需要使用CalibratedClassifierCV

from sklearn import linear_model
from sklearn.datasets import make_classification
from sklearn.calibration import CalibratedClassifierCV
# Build a classification task using 3 informative features
X, y = make_classification(n_samples=1000,
                           n_features=10,
                           n_informative=3,
                           n_redundant=0,
                           n_repeated=0,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)


per = linear_model.Perceptron()

clf_isotonic = CalibratedClassifierCV(per, cv=10, method='isotonic')

clf_isotonic.fit(X[:900], y[:900])

preds = clf_isotonic.predict_proba(X[900:])
print preds

[编辑] 您还可以使用此方法使其他linear_models为分类问题生成概率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接