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 avecRandomforest, 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