Я работаю с scikit-learn random forest classifier, и я хочу уменьшить ставку FP, увеличив количество деревьев, необходимых для успешного голосования, с более чем 50%, чтобы сказать 75% , после прочтения документации я не уверен, как это сделать. У кого-нибудь есть предложения. (Я думаю, что должен быть способ сделать это, потому что согласно документации метод прогнозирования классификатора решает на основе большинства голосов). Спасибо всем, спасибо!сокращение скорости FP scikit-learn random forest
1
A
ответ
1
Допустим, у вас теперь есть классификатор, который использует 75% -ное соглашение во всех оценках. Если он получит новый образец, а шансы составляют 51% -49% в пользу одного класса, что вы хотите сделать?
Причина, по которой используется правило 50%, заключается в том, что принятое вами решение может привести вас к случаям, когда классификатор говорит: «Я не могу предсказать метку этих образцов».
Что вы могу сделать, чтобы обернуть результаты классификатора, и делать все расчеты вы хотите -
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import numpy as np
def my_decision_function(arr):
diff = np.abs(arr[:,0]-arr[:,1])
arr [ diff < 0.5 ] = [-1,-1] # if >0.5, one class has more than 0.75 prediction
return arr
X, y = datasets.make_classification(n_samples=100000, n_features=20,
n_informative=2, n_redundant=2)
train_samples = 100 # Samples used for training the models
X_train = X[:train_samples]
X_test = X[train_samples:]
y_train = y[:train_samples]
y_test = y[train_samples:]
clf = RandomForestClassifier().fit(X_train,y_train)
print my_decision_function(clf.predict_proba(X_train))
Теперь, каждый образец с менее чем 0,75%, по крайней мере, один класс будет иметь [-1,-1]
прогнозирование. Некоторые корректировки наиболее важны, если вы используете классификацию с несколькими метками, но я надеюсь, что понятие понятно.
'predict_proba()> = 0.75'? –
@hiqbal не забудьте принять мой ответ, если он вам подходит ... :) – omerbp