scikit-learn RandomForestClassifier 中的拟合概率

数据挖掘 Python scikit-学习 随机森林 决策树
2022-02-28 06:06:05

这是一个新手问题,所以请多多包涵。给定这个随机森林模型:

from sklearn.ensemble import RandomForestClassifier

X = [ [2,1,1,1], [2,0,2,1], [3,1,1,1] ]
y = [ 0, 1, 2 ]

regr = RandomForestClassifier(n_estimators=200, max_depth=5)
regr.fit(X, y)

X_test = [ [3, 1, 1, 1] ]    
y_result = regr.predict_proba(X_test)
print('y_result:' , y_result )

结果是:

y_result: [[0.26 0.05 0.69]]

我知道这些是第一个、第二个和第三个值的概率,或者 0 = 26%、1 = 5% 和 2 = 69%。

问题:如果测试集是[3, 1, 1, 1]并且它适合值2,为什么我得到69%概率2而不是100%

1个回答

好吧,根据这个算法的工作原理,这就是为什么:你想200 treesmax depth of 5 levels. 每个tree都是decision tree, 使用您的数据子集进行训练。要回答您的问题,它不符合价值2,因为这不是它的工作方式。发生的事情是,52树木预测了价值0,10 预测了价值1,并138预测了价值2所以大多数树预测了2你要求概率的值(使用predict_proba(X_test))。如果您只想要一个值,请不要使用predict_probabut predict(X_test)但这只是你得到的概率的反映