テーブルデータの二値分類の分析をしています。
LightGBMをoptunaでパラメータチューニングし、チューニングしたパラメータをモデルに渡して学習させROC曲線とROCAUCスコアを出力させたいです。
最初はscikit-learn apiで書いていましたが、これでは調整出来るパラメータが少ないようなので、Training apiで書き換えようとしています。
ROCAUCやROC曲線を出力させるため、各クラスの予測確率を出力させたいのですが、training apiのlgbmにおいて予測確率を出力させるやり方がわかりません。
scikit-learn apiではpredict_probaが使えますが、これはtraining apiでは使えないですよね?
predict_probaの説明自体がscikit-learnのドキュメントに載っていますし、実際実行してみると、
python
1AttributeError: 'Booster' object has no attribute 'predict_proba'
と表示されてしまいます。
「"Training api" "predicted probability"」等で検索しましたが、結論としては解決法を見つけられませんでした。
このページ(https://teratail.com/questions/253968)を参考に、
python
1model.predict_proba(val_x)
としていたところを
python
1model.predict(data=val_x,raw_score=True)
と書き換えたのですが
python
1IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
と表示されてしまいます。
また、過去にも似たような質問はされているようなのですが、(https://teratail.com/questions/349446)結局どうしたらいいのかよくわかりませんでした。
Training apiの場合予測確率を出力させることは不可能なのでしょうか…?
ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー