Python Scikit-learn 感知器输出概率

Posted

技术标签:

【中文标题】Python Scikit-learn 感知器输出概率【英文标题】:Python Scikit-learn Perceptron Output Probabilities 【发布时间】:2015-10-25 20:56:06 【问题描述】:

我正在使用 scikit-learn 的感知器算法进行二进制分类。当使用库中的一些其他算法(RandomForestClassifer、LogisticRegression 等)时,我可以使用model.predict_proba() 让算法输出每个示例获得正数 (1) 的概率。有没有办法为 Perceptron 算法获得类似的输出?

我能得到的最接近的是model.decision_function(),它根据到超平面的有符号距离输出示例的置信度分数,但我不确定如何将这些置信度分数转换为概率数字我想要。

model.predict() 也只返回二进制值。

【问题讨论】:

【参考方案1】:

我想你想要的是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 产生分类问题的概率

【讨论】:

以上是关于Python Scikit-learn 感知器输出概率的主要内容,如果未能解决你的问题,请参考以下文章

感知器在线培训(scikit-learn)

Python机器学习中文版

Python机器学习中文版

机器学习之感知器算法原理和Python实现

Python_sklearn机器学习库学习笔记the perceptron(感知器)

python实现感知机线性分类模型