python中的随机森林:分类问题的最终概率

时间:2016-11-01 18:36:07

标签: python scikit-learn classification probability random-forest

在分类问题中,RF分类器根据多数表决给出最终响应,例如,是或否的。

另一方面,在Python中,我也可以看到一个具有事件最终概率的向量,例如: 0,83。如果我有1000个估计量,这个概率是如何计算的,是每个树的1000个概率的平均值?

clf = RandomForestClassifier(max_depth = 4, min_samples_split=2, n_estimators = 200, random_state = 1) 
clf.fit(train[columns], train["churn"]) 
predictions = clf.predict(test[columns]) 
predicted_probs = clf.predict_proba(test[columns]) 
print(predicted_probs) 
test = pd.concat([test, pd.DataFrame(predicted_probs, columns=['Col_0', 'Col_1'])], axis=1) 

1 个答案:

答案 0 :(得分:3)

  

是每棵树的1000个概率的平均值?

是的,确实如此。

向量显示所有树中每个选定类的平均概率。 Scikit RF分类中的最终投票选择了对于所有树的给定输入具有最高平均概率的类。

因此,对于双类数据集,对于给定的样本/输入,C1和C2分别在标记为1和2的树上具有概率0.3,0.7和0.5,0.5。 C1的平均概率为0.4,而C2平均概率为0.4。 0.6。

C2是该输入的选定类,因为它在两个树中具有最高的平均概率。

您还可以查看struct_values := &Output { Name: c.string("name") } ForestClassifiers方法的来源。从方法的predict

  

输入样本的预测类别是树中的投票   森林,按其概率估算加权。那是,   预测类是具有最高平均概率的类   估计整棵树。

总而言之,它是一种多数投票,其中投票权重不是跨树的类别频率,而是跨树的平均值。