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

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

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

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

解決済

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

rink
rink

総合スコア80

Python 3.x

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

1回答

0評価

0クリップ

494閲覧

投稿2021/12/25 18:23

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

python

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

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

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

python

def objective(trial): params = { 'alphas': trial.suggest_int('alphas', 1, 100) } model = make_pipeline(RobustScaler(), RidgeCV(cv = kfolds, **params)) model.fit(X_train, y_train) pre = model.predict(X_test) acc = metrics.accuracy_score(pre, y_test) score = 1 - acc return score

objectiveメソッドを使って、

python

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

を実行したところ、

text

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

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

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

python

def objective(trial): params = { 'kernel': 'rbf', 'C': trial.suggest_loguniform('C', 1e-10, 1e10), 'gamma': trial.suggest_loguniform('gamma', 1e-10, 3.0) } model_ = svm.SVC(**params) model_.fit(train_X, train_Y) pre = model_.predict(test_X) acc = metrics.accuracy_score(pre, test_Y) score = 1 - acc return score study = optuna.create_study(sampler = optuna.samplers.RandomSampler(seed = 0)) study.optimize(objective, n_trials = 100) print(study.best_params)

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

rink

2021/12/30 22:10

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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