ValueError: Found input variables with inconsistent numbers of samples: [2807, 6547]

2024年6月17日

このエラーは、トレーニング用の特徴量データX_rfと対応するラベルデータy_trainのサンプル数が一致しないために発生しています。エラーメッセージによると、X_rfのサンプル数は2807であり、y_trainのサンプル数は6547です。

このようなエラーが発生する原因はいくつか考えられますが、おそらくSMOTEによるオーバーサンプリングの処理に起因している可能性があります。SMOTEは少数クラスのサンプルを増やすために新しい合成サンプルを生成するため、元のトレーニングデータよりもサンプル数が増えることがあります。

解決策としては、ランダムフォレストのトレーニング時にSMOTEを適用せず、元のトレーニングデータを使用するか、SMOTEを適用する際にrandom_stateパラメータを設定して結果を再現可能にすることが考えられます。ただし、ランダムフォレストはデータの不均衡に対して比較的頑健であるため、SMOTEを適用せずともうまく動作することがあります。

修正のために、以下のようにランダムフォレストのトレーニング時にSMOTEを適用せず、元のトレーニングデータを使用するように修正してみてください:

python
# ランダムフォレストのトレーニング
rf_classifier = RandomForestClassifier()
rf_classifier.fit(X_train, y_train)  # SMOTEを適用せずに元のトレーニングデータを使用

未分類

Posted by ぼっち