3

В задачах классификации классификатор RF дает окончательный ответ в соответствии с большинством голосов, например. да или нет о событии.случайный лес в python: конечные вероятности в задачах классификации

С другой стороны, в 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) 
+0

Пожалуйста, разместите здесь свой код. Таким образом, мы видим ваши структуры данных и проблематичные биты ... – Ukimiku

ответ

3

это среднее 1000 вероятностей, от каждого дерева?

Да, это так.


Вектор показывает среднюю вероятность каждого выбранного класса по всем деревьям. Окончательное голосование в классификации Scikit RF выбирает класс с наивысшей средней вероятностью для данного входа для всех деревьев.

Так что, если для набора данных с двойным классом C1 и C2 имеют вероятности 0,3, 0,7 и 0,5, 0,5 по деревьям с меткой 1 и 2 соответственно для данного образца/ввода. C1 имеет среднюю вероятность 0,4, а C2 - среднюю. 0,6.

C2 - это выбранный класс для этого ввода, поскольку он имеет наивысшую среднюю вероятность для обоих деревьев.


Вы также можете посмотреть на исходный код для predict метода ForestClassifiers. Из __doc__ метода:

Прогнозируемый класс входной выборки является голосование деревьев в лесу, взвешенных по их оценкам вероятности. То есть предсказанный класс является тем, у которого средняя средняя вероятность оценивается по деревьям.

В целом, это типу большинства голосов, где весомость голосования не является классом частот по деревьям, а означает значения между деревьями.

Смежные вопросы