Définissons la régression «SVR» de «SVM».
Les principaux paramètres sont «gamma», «C», «epsilon ». J'ai également laissé kernel
en commentaire pour ne pas oublier le réglage. Il est possible de calculer avec kernel
, mais dès que le polynôme poly
est entré, le calcul devient lent, donc pour le moment, je pense qu'il vaut mieux calculer avec seulement rbf
(fonction de base de rayonnement). ..
Paramétrage
def objective(trial):
#kernel = trial.suggest_categorical('kernel', ['linear','rbf','poly','sigmoid','precomputed'])
gamma = trial.suggest_loguniform('gamma',1e-5,1e5)
C = trial.suggest_loguniform('C',1e-5,1e5)
epsilon = trial.suggest_loguniform('epsilon',1e-5,1e5)
#Si vous choisissez un noyau, utilisez ce qui précède
#regr = SVR(kernel = kernel, gamma = gamma, C = C ,epsilon = epsilon)
regr = SVR(kernel = 'rbf', gamma = gamma, C = C ,epsilon = epsilon)
score = cross_val_score(regr, X_train_std, y_train, cv=3, scoring="r2")
r2_mean = score.mean()
print(r2_mean)
return r2_mean
Apprendre avec Optuna
#étude optuna
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
#Convient aux hyper paramètres réglés
optimised_regr = SVR(kernel = 'rbf' , gamma = study.best_params['gamma'],
C = study.best_params['C'],epsilon = study.best_params['epsilon'])
'''
#Si vous sélectionnez le noyau, utilisez ceci
optimised_regr = SVR(kernel = study.best_params['kernel'] , gamma = study.best_params['gamma'],
C = study.best_params['C'],epsilon = study.best_params['epsilon'])
'''
optimised_regr.fit(X_train_std ,y_train)
Le résultat était comme ça et j'ai pu l'adapter avec un bon feeling.
Recommended Posts