AxisError: axis 1 is out of bounds for array of dimension 1

2024年6月17日

roc_auc_score関数は、各クラスの予測確率を表す2次元の配列ではなく、1次元の配列を受け取ることが期待されています。エラーメッセージから推測するに、y_pred_lgbmが1次元の配列ではなく2次元の配列であり、そのためにaxis 1 is out of boundsエラーが発生しています。

LightGBMの予測確率が1次元の配列ではない可能性があります。これを修正するためには、LightGBMのpredictメソッドにraw_score=Trueパラメータを指定して、予測確率を取得することができます。この場合、予測確率は2次元の配列として返されるため、適切な形式に変換する必要があります。

具体的な修正方法としては、predictメソッドの代わりにpredict_probaメソッドを使用することが考えられます。これにより、各クラスの予測確率が格納された2次元の配列が返されます。その後、適切なクラスの予測確率を取得し、roc_auc_score関数に渡すことができます。以下に修正例を示します。

python
y_pred_lgbm_proba = lgbm_model.predict_proba(X_test)[:, 1]  # 各クラスの予測確率から目的クラスの確率を取得
roc_auc = roc_auc_score(y_test, y_pred_lgbm_proba)

この修正を行うことで、roc_auc_score関数が正しく機能し、エラーが解消されるはずです。

未分類

Posted by ぼっち