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

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

新規登録して質問してみよう
ただいま回答率
85.35%
機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

6863閲覧

lightgbmの一部パラメータ設定方法がわかりません

tictak00

総合スコア10

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/09 05:35

編集2020/05/09 06:36

前提・実現したいこと

pythonにて多クラス分類を行なっています。

発生している問題・エラーメッセージ

モデル生成時のパラメータ設定で一部のパラメータ(下記warning)が正しく設定できません。
なお、初期値も後で修正する可能性があるため、全パラメータを記載しております。

どうぞよろしくお願いいたします。

[Warning] Unknown parameter: silent [LightGBM] [Warning] Unknown parameter: class_weight [LightGBM] [Warning] Unknown parameter: importance_type

該当のソースコード

python

1def make_model(X, Y): 2 train_df = X.join(Y) 3 train_set, eval_set = train_test_split(train_df, test_size=0.2, random_state=4) 4 target = Y.name 5 train_X = train_set.drop(target, axis=1).values 6 train_Y = train_set[target].values 7 eval_X = eval_set.drop(target, axis=1).values 8 eval_Y = eval_set[target].values 9 10 train_data = lgb.Dataset(train_X, label=train_Y) 11 eval_data = lgb.Dataset(eval_X, label=eval_Y) 12 13 params = { 14 'task': 'train' 15 , 'boosting_type' : 'gbdt' 16 , 'num_leaves' : 31 17 , 'max_depth' : -1 18 , 'learning_rate' : 0.1 19 , 'n_estimators' : 100 20 , 'subsample_for_bin' : 200000 21 , 'objective' : 'multiclassova' 22 , 'num_class' : 6 23 , 'class_weight' : 'balanced' 24 , 'min_split_gain' : 0.0 25 , 'min_child_weight' : 0.001 26 , 'min_child_samples' : 20 27 , 'subsample' : 1.0 28 , 'subsample_freq' : 0 29 , 'colsample_bytree' : 1.0 30 , 'reg_alpha' : 0.0 31 , 'reg_lambda' : 0.0 32 , 'random_state' : None 33 , 'n_jobs' : int(multiprocessing.cpu_count() * 0.5) 34 , 'silent' : True 35 , 'importance_type' : 'split' 36 , 'verbosity': -1 37 } 38 39 logging.info(params) 40 41 model = lgb.train( 42 params 43 ,train_data 44 ,valid_sets = eval_data 45 ,num_boost_round = 100 46 ,verbose_eval = 0 47 ) 48 49 return model

試したこと

lightgbmのソースを確認したところ、class_weightに渡すべきは辞書型
とのことだったので、{'0':1,'1':2}のような形で渡しましたが、正しく読み込まれませんでした。

補足情報(FW/ツールのバージョンなど)

OS:macOS Catalina
CPU:3.2 GHz 6コア 12スレッド
メモリ:16 GB
python:3.7.5

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

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

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

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

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

kabayan55

2020/06/10 13:48

> lightgbmのソースを確認したところ、class_weightに渡すべきは辞書型 とありますが、該当箇所のコードのリンクを質問文に追記していただけますか? 使っていらっしゃる lightgbm のバージョンも教えていただきたいです。 lightgbmの公式ドキュメントのパラメータの一覧をみましたが、class_weight は見当たりません。また、importance_type もないと思います。エラーの出ていない、他のパラメータは存在しています。 https://lightgbm.readthedocs.io/en/latest/Parameters.html
guest

回答1

0

そのオプションは試したことがないのですが
ラベルは数値のはずではなので

python

1{0:1, 1:2}

は試されましたでしょうか。

参考
https://stackoverflow.com/questions/60906262/lightgbm-classifier-errors-on-class-weights

投稿2020/06/24 09:25

aokikenichi

総合スコア2240

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問