2015-06-29 1 views
1

Я работаю с scikit-learn random forest classifier, и я хочу уменьшить ставку FP, увеличив количество деревьев, необходимых для успешного голосования, с более чем 50%, чтобы сказать 75% , после прочтения документации я не уверен, как это сделать. У кого-нибудь есть предложения. (Я думаю, что должен быть способ сделать это, потому что согласно документации метод прогнозирования классификатора решает на основе большинства голосов). Спасибо всем, спасибо!сокращение скорости FP scikit-learn random forest

+1

'predict_proba()> = 0.75'? –

+0

@hiqbal не забудьте принять мой ответ, если он вам подходит ... :) – omerbp

ответ

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] прогнозирование. Некоторые корректировки наиболее важны, если вы используете классификацию с несколькими метками, но я надеюсь, что понятие понятно.