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
< /code>
Я использовал эту функцию [b] < /strong> 5 раз с этим кодом: < /p>
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
< /code>
Это результаты < /strong>: < /p>
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}
¿¿Почему я получаю разные результаты [/b] в r2 -балле ?, это потому, что я выбираю cv = 5 ?, ¿Это потому, что я не определял random_state = 0 на randomforestregresressor () ?>
Я хочу улучшить параметры этого [b] gridsearchcv [/b] для [b] ring -регрессора [/b].
[code]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
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 < /code>
Я использовал эту функцию [b] < /strong> 5 раз с этим кодом: < /p>
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 < /code>
Это результаты < /strong>: < /p>
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} [/code]
¿¿Почему я получаю разные результаты [/b] в [b] r2 -балле [/b]?, это потому, что я выбираю [b] cv = 5 [/b]?, ¿Это потому, что я не определял [b] random_state = 0 [/b] на [b] randomforestregresressor () [/b]?>
Я хочу улучшить параметры этого gridsearchcv для ring -регрессора .
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...
Существует ли простой/уже существующий способ выполнить поиск по сетке в scikit-learn, а затем автоматически вернуть k самых эффективных моделей или автоматически усреднить их результаты? Я намерен таким образом попытаться уменьшить переобучение. Я...
Я пытаюсь использовать GaussianProcessRegressor как часть scikit-learn 0.18.1
Я тренируюсь на 200 точках данных и использую 13 входных функций для своего ядра — константа умноженное на радиальную базисную функцию с двенадцатью элементами. Модель...