from lightgbm import LGBMRegressor from sklearn.metrics import mean_squared_error # LightGBMモデルの作成とトレーニング X_train = X_train.astype(float) X_test = X_test.astype(float) lgbm_model = LGBMRegressor() lgbm_model.fit(X_train, y_train) # テストセットでの予測 y_pred_lgbm = lgbm_model.predict(X_test) from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score # 分類モデルの評価 y_pred_lgbm_class = [1 if pred > 0.5 else 0 for pred in y_pred_lgbm] # LightGBMの予測確率をクラスに変換 accuracy = accuracy_score(y_test, y_pred_lgbm_class) precision = precision_score(y_test, y_pred_lgbm_class) recall = recall_score(y_test, y_pred_lgbm_class) f1 = f1_score(y_test, y_pred_lgbm_class) roc_auc = roc_auc_score(y_test, y_pred_lgbm) print(“Accuracy:”, accuracy) print(“Precision:”, precision) print(“Recall:”, recall) print(“F1 Score:”, f1) print(“ROC AUC Score:”, roc_auc)

提供されたコードは、LightGBMを使用して回帰モデルを作成し、その後分類の評価指標を使用しているため、正しくありません。回帰モデル(LGBMRegressor)を使用しているため、出力される予測値 y_pred_lgbm は連続値であり、しきい値0.5でクラスに変換することは適切ではありません。

以下は、正しいアプローチです。分類モデルである LGBMClassifier を使用してモデルをトレーニングし、その後適切な分類評価指標を使用してモデルを評価します。

python
from lightgbm import LGBMClassifier from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score # LightGBMモデルの作成とトレーニング lgbm_model = LGBMClassifier() lgbm_model.fit(X_train, y_train) # テストセットでの予測 y_pred_lgbm = lgbm_model.predict(X_test) # 分類モデルの評価 accuracy = accuracy_score(y_test, y_pred_lgbm) precision = precision_score(y_test, y_pred_lgbm) recall = recall_score(y_test, y_pred_lgbm) f1 = f1_score(y_test, y_pred_lgbm) roc_auc = roc_auc_score(y_test, y_pred_lgbm) print("Accuracy:", accuracy) print("Precision:", precision) print("Recall:", recall) print("F1 Score:", f1) print("ROC AUC Score:", roc_auc)

このコードでは、LGBMClassifier を使用して分類モデルをトレーニングし、その後分類評価指標を計算してモデルを評価しています。

未分類

Posted by ぼっち