对于一个分类问题,有时我们不只是预测一个类,而是需要返回它是一个类的概率。
即P(y=0|x), P(y=1|x), P(y=2|x), ..., P(y=C|x)
无需构建新的分类器来分别预测 y=0、y=1、y=2...y=C。由于训练 C 分类器(假设 C=100)可能会非常慢。
可以做什么来做到这一点?什么分类器自然可以轻松给出所有概率(我知道使用具有 100 个输出节点的神经网络)?但如果我使用传统的随机森林,我就无法做到这一点,对吧?我使用 Python Scikit-Learn 库。
最佳答案
如果您想要概率,请查找具有方法的 sklearn 分类器:predict_proba()
有关多类的 Sklearn 文档:[ http://scikit-learn.org/stable/modules/multiclass.html]
所有 scikit-learn 分类器都能够进行多类分类。因此您不需要自己构建 100 个模型。
以下是 scikit-learn 支持的分类器按策略分组的摘要:
- 本质上是多类的:朴素贝叶斯、LDA 和 QDA、决策树、 随机森林,最近邻,设置 multi_class='multinomial' 在 sklearn.linear_model.LogisticRegression 中。
- 支持多标签:决策树、随机森林、最近邻、岭回归。
- 一对一:sklearn.svm.SVC。
- One-Vs-All:除 sklearn.svm.SVC 之外的所有线性模型。
关于python - 如何在不为每个类别构建分类器的情况下获得所有类别的预测概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738703/