質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2498閲覧

optunaで最適なパラメータを見つけたい

rink

総合スコア80

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/12/25 18:23

optuna を使って、最適なパラメータを見つけたいです。

python

1print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)

(976, 315) (976,) (482, 315) (482,)

データは上の様になっています。
optunaを利用するにあたって、以下のメソッドを組みました。

python

1def objective(trial): 2 3 params = { 4 'alphas': trial.suggest_int('alphas', 1, 100) 5 } 6 model = make_pipeline(RobustScaler(), RidgeCV(cv = kfolds, **params)) 7 model.fit(X_train, y_train) 8 pre = model.predict(X_test) 9 acc = metrics.accuracy_score(pre, y_test) 10 score = 1 - acc 11 return score

objectiveメソッドを使って、

python

1study = optuna.create_study(sampler = optuna.samplers.RandomSampler(seed = 0)) 2study.optimize(objective, n_trials = 100) 3print(study.best_params)

を実行したところ、

text

1 Trial 0 failed because of the following error: TypeError('len() of unsized object') 2Traceback (most recent call last): 3 File "/opt/conda/lib/python3.7/site-packages/optuna/study/_optimize.py", line 213, in _run_trial 4 value_or_values = func(trial) 5 File "/tmp/ipykernel_57/646466574.py", line 7, in objective 6 model.fit(X_train, y_train) 7 File "/opt/conda/lib/python3.7/site-packages/sklearn/pipeline.py", line 335, in fit 8 self._final_estimator.fit(Xt, y, **fit_params_last_step) 9 File "/opt/conda/lib/python3.7/site-packages/sklearn/linear_model/_ridge.py", line 1617, in fit 10 parameters, cv=cv, scoring=self.scoring) 11 File "/opt/conda/lib/python3.7/site-packages/sklearn/utils/validation.py", line 72, in inner_f 12 return f(**kwargs) 13 File "/opt/conda/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 1184, in __init__ 14 _check_param_grid(param_grid) 15 File "/opt/conda/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 395, in _check_param_grid 16 if len(v) == 0: 17TypeError: len() of unsized object

のエラーが出てしまいます。

違うデータセットなのですが、以下のコードだと動きます。

python

1def objective(trial): 2 params = { 3 'kernel': 'rbf', 4 'C': trial.suggest_loguniform('C', 1e-10, 1e10), 5 'gamma': trial.suggest_loguniform('gamma', 1e-10, 3.0) 6 } 7 model_ = svm.SVC(**params) 8 model_.fit(train_X, train_Y) 9 pre = model_.predict(test_X) 10 acc = metrics.accuracy_score(pre, test_Y) 11 score = 1 - acc 12 return score 13 14study = optuna.create_study(sampler = optuna.samplers.RandomSampler(seed = 0)) 15study.optimize(objective, n_trials = 100) 16print(study.best_params)

そもそも、RidgeをOptunaにかけること自体が間違っているのでしょうか?どなたか、ご教示いただけると有難いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2021/12/30 22:10

わざわざリンクまでありがとうございます!!確認させていただきます!!<(_ _)>
guest

回答1

0

ベストアンサー

RidgeをOptunaにかけること自体が間違っているのでしょうか?

HyperoptとOptunaによるハイパーパラメータチューニングの例
に、リッジ回帰のハイパーパラメータをOptunaで最適化するコードがあります

投稿2022/01/06 00:27

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問