GridSearchCV Настройка случайного лесного регрессора Лучшие параметрыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 GridSearchCV Настройка случайного лесного регрессора Лучшие параметры

Сообщение Anonymous »

Я хочу улучшить параметры этого GridSearchCV для регрессора случайного леса.

Код: Выделить всё

def Grid_Search_CV_RFR(X_train, y_train):
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import ShuffleSplit
from sklearn.ensemble import RandomForestRegressor

estimator = RandomForestRegressor()
param_grid = {
"n_estimators"      : [10,20,30],
"max_features"      : ["auto", "sqrt", "log2"],
"min_samples_split" : [2,4,8],
"bootstrap": [True, False],
}

grid = GridSearchCV(estimator, param_grid, n_jobs=-1, cv=5)

grid.fit(X_train, y_train)

return grid.best_score_ , grid.best_params_

def RFR(X_train, X_test, y_train, y_test, best_params):
from sklearn.ensemble import RandomForestRegressor
estimator = RandomForestRegressor(n_jobs=-1).set_params(**best_params)
estimator.fit(X_train,y_train)
y_predict = estimator.predict(X_test)
print "R2 score:",r2(y_test,y_predict)
return y_test,y_predict

def splitter_v2(tab,y_indicator):
from sklearn.model_selection import train_test_split
# Asignamos X e y, eliminando la columna y en X
X = correlacion(tab,y_indicator)
y = tab[:,y_indicator]
# Separamos Train y Test respectivamente para X e y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
return X_train, X_test, y_train, y_test
Я использовал эту функцию 5 раз с этим кодом:

Код: Выделить всё

for i in range(5):
print "Loop: " , i
print "--------------"
X_train, X_test, y_train, y_test = splitter_v2(tabla,1)
best_score, best_params = Grid_Search_CV_RFR(X_train, y_train)
y_test , y_predict = RFR(X_train, X_test, y_train, y_test, best_params)
print "Best Score:" ,best_score
print "Best params:",best_params
Вот результаты:

Код: Выделить всё

Loop:  0
--------------
R2 score: 0.900071279487
Best Score: 0.61802821072
Best params: {'max_features': 'log2', 'min_samples_split': 2, 'bootstrap': False, 'n_estimators': 10}
Loop:  1
--------------
R2 score: 0.993462885564
Best Score: 0.671309726329
Best params: {'max_features': 'log2', 'min_samples_split': 4, 'bootstrap': False, 'n_estimators': 10}
Loop:  2
--------------
R2 score: -0.181378339338
Best Score: -30.9012120698
Best params: {'max_features': 'log2', 'min_samples_split': 4, 'bootstrap': True, 'n_estimators': 20}
Loop:  3
--------------
R2 score: 0.750116663033
Best Score: 0.71472985391
Best params: {'max_features': 'log2', 'min_samples_split': 4, 'bootstrap': False, 'n_estimators': 30}
Loop:  4
--------------
R2 score: 0.692075744759
Best Score: 0.715012972471
Best params: {'max_features': 'sqrt', 'min_samples_split': 2, 'bootstrap': True, 'n_estimators': 30}
¿Почему я получаю разные результаты в оценке R2?, ¿Это потому, что я выбираю CV=5?, ¿Это потому, что я не определил random_state=0 в своем RandomForestRegressor() ?

Подробнее здесь: https://stackoverflow.com/questions/435 ... est-params
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»