Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OneVSRest分类器预测概率校准_Python_Machine Learning_Scikit Learn_Multilabel Classification - Fatal编程技术网

Python OneVSRest分类器预测概率校准

Python OneVSRest分类器预测概率校准,python,machine-learning,scikit-learn,multilabel-classification,Python,Machine Learning,Scikit Learn,Multilabel Classification,在我的多标签分类问题中,除了类预测之外,我还需要检索这些预测的置信度分数 我使用OneVSRestClassifier和Logistic回归模型作为基础分类器。在对我的训练集和测试集进行实验时,我注意到,当不使用概率校准时,大多数置信度分数在0.95-0.95范围内,奇怪的是,大约10%的分数非常接近于零(然后分类器不会预测任何标签) 我已经读到,逻辑回归应该已经得到很好的校准,所以有人能解释一下为什么可以观察到这种行为吗?我希望概率分布更为平稳。这是否意味着OneVsRestClassifie

在我的多标签分类问题中,除了类预测之外,我还需要检索这些预测的置信度分数

我使用OneVSRestClassifier和Logistic回归模型作为基础分类器。在对我的训练集和测试集进行实验时,我注意到,当不使用概率校准时,大多数置信度分数在0.95-0.95范围内,奇怪的是,大约10%的分数非常接近于零(然后分类器不会预测任何标签)

我已经读到,逻辑回归应该已经得到很好的校准,所以有人能解释一下为什么可以观察到这种行为吗?我希望概率分布更为平稳。这是否意味着OneVsRestClassifier的逻辑回归组件的良好校准不再适用

我决定使用sklearn中提供的CalibratedClassifiedRCV类,但根据以下观察,我注意到一些概率显著降低。为什么几乎百分之百的信心会下降到50%左右?有人知道有没有其他方法可以帮助我衡量这些概率

无校准:

[0.99988209306050746], [0.99999511284844622], [0.99999995078223347], [0.99999989965720448], [0.99999986079273884], [0.99979651575446726], [0.99937347155943868]
等渗校准:

[0.49181127862298107], [0.62761741532720483], [0.71285392633212574], [0.74505221607398842], [0.67966429109225246], [0.47133458243199672], [0.48596255165026925]
[0.61111111111111116], [0.86111111111111116], [0.86111111111111116], [0.86111111111111116], [0.86111111111111116], [0.61111111111111116], [0.47222222222222227]
乙状结肠校准:

[0.49181127862298107], [0.62761741532720483], [0.71285392633212574], [0.74505221607398842], [0.67966429109225246], [0.47133458243199672], [0.48596255165026925]
[0.61111111111111116], [0.86111111111111116], [0.86111111111111116], [0.86111111111111116], [0.86111111111111116], [0.61111111111111116], [0.47222222222222227]
我目前使用的代码是:

#Fit the classifier
clf = LogisticRegression(C=1., solver='lbfgs')
clf = CalibratedClassifierCV(clf, method='sigmoid')
clf = OneVsRestClassifier(clf)
mlb = MultiLabelBinarizer()
mlb = mlb.fit(train_labels)
train_labels = mlb.transform(train_labels)
clf.fit(train_profiles, train_labels)

#Predict probabilities:
probas = clf.predict_proba([x_test])