在随机森林分类器中,如何获得由“预测”预测的类的“预测概率”?

2024-05-16 11:36:17 发布

您现在位置:Python中文网/ 问答频道 /正文

from sklearn import ensemble

model = ensemble.RandomForestClassifier(n_estimators=10)
model.fit(x,y)
predictions = model.predict(new)

我知道^{}使用^{}通过计算森林中树木的预测类概率的平均值来获得预测

我想为predict()方法预测的类获取predict_proba()的结果

我所做的是:第一次调用predict(),就像上面的代码一样,对于概率,我从树中提取最大概率,如下所示:

all_probabilities = model.predict_proba()
class_probabilities = np.array([])
for tree in all_probabilities:
    class_probabilites = np.append(class_probabilities, tree.max())

这是正确的吗?如果不是,我如何提取预测类的概率


Tags: fromimporttreemodelnpsklearnall概率
1条回答
网友
1楼 · 发布于 2024-05-16 11:36:17

predict_proba()方法返回一个二维数组,其中包含每个实例和每个类的估计概率:

import numpy as np
from sklearn.ensemble import RandomForestClassifier

X = np.array([[1, 2, 3], 
              [4, 5, 6], 
              [7, 8, 9], 
              [10, 11, 12]])
y = np.array([0, 0, 1, 1])

model = RandomForestClassifier()
model.fit(X, y)

model.predict_proba(X)
array([[0.91, 0.09],
       [0.91, 0.09],
       [0.25, 0.75],
       [0.05, 0.95]])

正如您所注意到的,对于每个实例,预测的类都是概率最大的类。因此,获得预测类的估计概率的一个简单方法是使用np.max()

np.max(model.predict_proba(X), axis=1)
array([0.91, 0.91, 0.75, 0.95])

相关问题 更多 >