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

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

新規登録して質問してみよう
ただいま回答率
87.20%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

受付中

グリッドサーチをするとエラーになります(同じデータなのに..)

python_2019
python_2019

総合スコア68

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0回答

0評価

0クリップ

298閲覧

投稿2021/12/13 06:17

編集2022/01/12 10:55

・グリッドサーチをしないと正常終了します。
・グリッドサーチをするとエラーになります。

同じデータセットを使用しています。
ハイパーパラメータも両者同じです。

何故グリッドサーチはエラーになるのか全くわかりません。。

どなたかアドバイス頂戴できれば助かります。

1. グリッドサーチをしない場合のコード

from sklearn import datasets from matplotlib import pyplot as plt import lightgbm as lgb # LGB用のデータセットを登録 lgb_train = lgb.Dataset(x_train_std, y_train) lgb_test = lgb.Dataset(x_test_std, y_test, reference=lgb_train) # LightGBMのハイパーパラメータを設定 params = {'task': 'train', # タスクを訓練に設定 'boosting_type': 'gbdt', # GBDTを指定 'objective': 'multiclass', # 多クラス分類を指定 'metric': {'multi_logloss'}, # 多クラス分類の損失(誤差) 'num_class': 2, # クラスの数 'learning_rate': 0.2, # 学習率 'max_dapth': 1, # 木の深さ 'num_leaves': 5, # ノードの数 'min_data_in_leaf': 15 # 決定木ノードの最小データ数 #'num_iteration': 1000 # 予測器(決定木)の数:イタレーション(反復数)(デフォルトは100) } lgb_results = {} # 学習の履歴を入れる入物 gbm = lgb.train(params=params, # ハイパーパラメータをセット train_set=lgb_train, # 訓練データを訓練用にセット valid_sets=[lgb_train, lgb_test], # 訓練データとテストデータをセット valid_names=['Train', 'Test'], # データセットの名前をそれぞれ設定 num_boost_round=1000, # 計算回数(デフォルトは100)、'num_iteration と同じ early_stopping_rounds=300, # この数値までは実行するが、それ以降、過学習が発生したらstopする。 evals_result=lgb_results,# 履歴を保存する verbose_eval=0,) # 途中経過の表示数 loss_train = lgb_results['Train']['multi_logloss'] # 訓練誤差 loss_test = lgb_results['Test']['multi_logloss'] # 汎化誤差 best_iteration = gbm.best_iteration # 最良の予測器が得られたインタレーション数 print(best_iteration)

2.グリッドサーチをした場合のコード

#グリッドサーチ import lightgbm as lgb from sklearn.model_selection import GridSearchCV # LGB用のデータセットを登録 #lgb_train = lgb.Dataset(x_train_std, y_train) #lgb_test = lgb.Dataset(x_test_std, y_test, reference=lgb_train) lightgbm = lgb.LGBMClassifier(objective='binary', random_state=0) params = {'task':[ 'train'], # タスクを訓練に設定 'boosting_type': ['gbdt'], # GBDTを指定 'objective': ['multiclass'], # 多クラス分類を指定 'metric': ['multi_logloss'], # 多クラス分類の損失(誤差) 'num_class': [2], # クラスの数 'learning_rate': [0.2], # 学習率 'max_dapth': [1], # 木の深さ 'num_leaves': [5], # ノードの数 'min_data_in_leaf': [15], # 決定木ノードの最小データ数 } gbm = GridSearchCV(estimator=lightgbm, param_grid=params, scoring='accuracy', cv=2, n_jobs=-1, verbose=0, ) gbm.fit(x_train_std, y_train) # 最も良いパラメータとスコア print(gbm.best_params_) print(gbm.best_score_)

3.エラーメッセージ(グリッドサーチをした場合)

ValueError: y contains previously unseen labels: [156 353]

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。