Depuis que j'ai écrit comment utiliser ʻOptunala dernière fois, je décrirai la méthode de réglage individuel à partir de maintenant. .. Il y a plusieurs arguments qui peuvent être passés avec
Randomforest, mais j'ai mis tous les principaux avec ʻOptuna
.
Je me demandais s'il fallait passer max_depth
, n_estimators
en tant qu'entiers ou nombres en tant que catégories, mais cette fois je les ai passés sous forme d'entiers.
def objective(trial):
criterion = trial.suggest_categorical('criterion', ['mse', 'mae'])
bootstrap = trial.suggest_categorical('bootstrap',['True','False'])
max_depth = trial.suggest_int('max_depth', 1, 10000)
max_features = trial.suggest_categorical('max_features', ['auto', 'sqrt','log2'])
max_leaf_nodes = trial.suggest_int('max_leaf_nodes', 1, 10000)
n_estimators = trial.suggest_int('n_estimators', 30, 1000)
regr = RandomForestRegressor(bootstrap = bootstrap, criterion = criterion,
max_depth = max_depth, max_features = max_features,
max_leaf_nodes = max_leaf_nodes,n_estimators = n_estimators,n_jobs=2)
#regr.fit(X_train, y_train)
#y_pred = regr.predict(X_val)
#return r2_score(y_val, y_pred)
score = cross_val_score(regr, X_train, y_train, cv=5, scoring="r2")
r2_mean = score.mean()
return r2_mean
#Exécutez optuna et définissez les hyper paramètres
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=1000)
#Créer une instance avec des hyperparamètres réglés
optimised_rf = RandomForestRegressor(bootstrap = study.best_params['bootstrap'], criterion = study.best_params['criterion'],
max_depth = study.best_params['max_depth'], max_features = study.best_params['max_features'],
max_leaf_nodes = study.best_params['max_leaf_nodes'],n_estimators = study.best_params['n_estimators'],
n_jobs=2)
#apprendre
optimised_rf.fit(X_train ,y_train)
Je l'ai utilisé pour régler les hyperparamètres à l'aide de l'ensemble de données de Boston. Cela va bien.
Recommended Posts