Stellen wir die Regression "SVR" von "SVM" ein. Die Haupteinstellungen sind "Gamma", "C", "Epsilon". Ich habe auch "Kernel" als Kommentar hinterlassen, um die Einstellung nicht zu vergessen. Es ist möglich, mit eingeschlossenem "Kernel" zu berechnen, aber sobald das "Poly" -Polynom eingegeben wird, wird die Berechnung langsam. Daher denke ich, dass es vorerst besser ist, nur mit "rbf" (Strahlungsbasisfunktion) zu berechnen. ..
Parametereinstellungen
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)
#Wenn Sie einen Kernel auswählen, verwenden Sie die oben genannten
#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
Lernen mit Optuna
#Optuna-Studie
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
#Passend für abgestimmte Hyperparameter
optimised_regr = SVR(kernel = 'rbf' , gamma = study.best_params['gamma'],
C = study.best_params['C'],epsilon = study.best_params['epsilon'])
'''
#Wenn Sie den Kernel auswählen, verwenden Sie diesen
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)
Das Ergebnis war so und ich konnte es mit einem guten Gefühl ausstatten.
Recommended Posts