首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn -预测每个类的概率

sklearn -预测每个类的概率
EN

Stack Overflow用户
提问于 2017-11-07 04:04:00
回答 2查看 9.4K关注 0票数 3

到目前为止,我已经为another postsklearn documentation提供了资源

因此,总的来说,我想要生成以下示例:

代码语言:javascript
复制
X = np.matrix([[1,2],[2,3],[3,4],[4,5]])
y = np.array(['A', 'B', 'B', 'C', 'D'])
Xt = np.matrix([[11,22],[22,33],[33,44],[44,55]])
model = model.fit(X, y)
pred = model.predict(Xt)

但是,对于输出,我希望看到每个观察值3列作为pred的输出:

代码语言:javascript
复制
 A  |  B  |  C
.5  | .2  | .3
.25 | .25 | .5
...

在我的预测中,每个班级都有不同的概率。

我认为最好的方法应该是来自我上面提供的第二个链接的Multilabel classification。此外,我认为使用下面列出的multi-labelmulti-output模型之一可能是个好主意:

代码语言:javascript
复制
Support multilabel:

    sklearn.tree.DecisionTreeClassifier
    sklearn.tree.ExtraTreeClassifier
    sklearn.ensemble.ExtraTreesClassifier
    sklearn.neighbors.KNeighborsClassifier
    sklearn.neural_network.MLPClassifier
    sklearn.neighbors.RadiusNeighborsClassifier
    sklearn.ensemble.RandomForestClassifier
    sklearn.linear_model.RidgeClassifierCV

Support multiclass-multioutput:

    sklearn.tree.DecisionTreeClassifier
    sklearn.tree.ExtraTreeClassifier
    sklearn.ensemble.ExtraTreesClassifier
    sklearn.neighbors.KNeighborsClassifier
    sklearn.neighbors.RadiusNeighborsClassifier
    sklearn.ensemble.RandomForestClassifier

然而,我正在寻找的人谁是有更多的信心和经验,在做这件事的正确方式。我们非常感谢所有的反馈。

-bmc

EN

回答 2

Stack Overflow用户

发布于 2017-11-07 12:23:12

据我所知,您希望获得多类分类器的每个潜在类的概率。

在Scikit-Learn中,它可以通过泛型函数predict_proba来完成。它是为scikit-learn中的大多数分类器实现的。你可以简单地调用:

代码语言:javascript
复制
clf.predict_proba(X)

其中clf是经过训练的分类器。作为输出,您将获得每个输入值的每个类的概率的十进制数组。

需要注意的是,并不是所有的分类器都会自然地评估类别概率。例如,SVM不能做到这一点。不过,您仍然可以获得类概率,但要做到这一点,在构造这样的分类器时,您需要指示它执行概率估计。对于SVM,它看起来是这样的:

代码语言:javascript
复制
SVC(Probability=True)

安装好之后,您就可以像以前一样使用predict_proba了。

我需要警告你,如果分类器不自然地评估概率,这意味着将使用相当扩展的计算方法来评估概率,这可能会显着增加训练时间。所以我建议你使用可以自然评估类别概率的分类器(带有softmax输出的神经网络,逻辑回归,梯度提升等)

票数 14
EN

Stack Overflow用户

发布于 2020-05-13 13:25:03

尝试使用校准模型:

代码语言:javascript
复制
# define model
model = SVC()
# define and fit calibration model
calibrated = CalibratedClassifierCV(model, method='sigmoid', cv=5)
calibrated.fit(trainX, trainy)
# predict probabilities
print(calibrated.predict_proba(testX)[:, 1])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47144832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档