交互検証したい、コード頂戴
交差検証を行うためのコードを提供します。以下の例では、層化k分割交差検証(StratifiedKFold)を使用します。
python
import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import StratifiedKFold, cross_validate from imblearn.combine import SMOTETomek from sklearn.metrics import make_scorer, precision_score, recall_score, f1_score # データ読み込み data = pd.read_csv("/home/share/temp/20230301-20240331_site_zaiko_suii.csv", encoding="cp932") # 特徴量と目的変数の選択 X = data.drop(["SKU","原価", "商品名", "ブランド名", "メーカー名"], axis=1) y = X.iloc[:, -1].apply(lambda x: 1 if x < 0 else 0) X = X.iloc[:, :-1] # 不均衡データへの対処 smt = SMOTETomek(random_state=42) X_resampled, y_resampled = smt.fit_resample(X, y) # ランダムフォレストモデルの定義 rf_classifier = RandomForestClassifier(n_estimators=30, random_state=42) # 評価指標の定義(Precision, Recall, F1-score) scoring = {'precision': make_scorer(precision_score), 'recall': make_scorer(recall_score), 'f1_score': make_scorer(f1_score)} # 層化k分割交差検証を実行 cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) cv_results = cross_validate(rf_classifier, X_resampled, y_resampled, cv=cv, scoring=scoring) # 結果の表示 print("Precision:", cv_results['test_precision']) print("Recall:", cv_results['test_recall']) print("F1-score:", cv_results['test_f1_score'])
このコードでは、層化k分割交差検証を行い、Precision、Recall、F1-scoreの各評価指標を使用してモデルの性能を評価しています。不均衡データに対してSMOTETomekを使用してオーバーサンプリングを行っています。

ディスカッション
コメント一覧
まだ、コメントがありません