Python Scikit-learn 感知器输出概率
Python Scikit-learn Perceptron Output Probabilities
我正在使用 scikit-learn 的 Perceptron 算法进行二元分类。当使用库中的其他一些算法(RandomForestClassifer、LogisticRegression 等)时,我可以使用 model.predict_proba()
让算法输出每个示例获得正数 (1) 的概率。有没有办法为感知器算法获得类似的输出?
我能得出的最接近的是 model.decision_function()
,它根据与超平面的符号距离输出示例的置信度分数,但我不确定如何转换这些置信度分数到我想要的概率数字。
model.predict()
也只返回二进制值。
我想你想要的是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
产生分类问题的概率
我正在使用 scikit-learn 的 Perceptron 算法进行二元分类。当使用库中的其他一些算法(RandomForestClassifer、LogisticRegression 等)时,我可以使用 model.predict_proba()
让算法输出每个示例获得正数 (1) 的概率。有没有办法为感知器算法获得类似的输出?
我能得出的最接近的是 model.decision_function()
,它根据与超平面的符号距离输出示例的置信度分数,但我不确定如何转换这些置信度分数到我想要的概率数字。
model.predict()
也只返回二进制值。
我想你想要的是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
产生分类问题的概率