————————————————————————— ValueError Traceback (most recent call last) Cell In[186], line 50 40 X_combined = hstack([X_product_name_vectorized, 41 X_category_name_vectorized, 42 X_description_vectorized, (…) 46 X_maker_name_japanese_vectorized, 47 X_supplier_name_vectorized]) 49 # モデルを使用して予測を行う —> 50 y_pred = rf_classifier.predict(X_combined) 52 # 予測結果をDataFrameに追加 53 data_to_predict[‘predicted_size’] = y_pred File /home/share/temp/venv/lib/python3.8/site-packages/sklearn/ensemble/_forest.py:823, in ForestClassifier.predict(self, X) 802 def predict(self, X): 803 “”” 804 Predict class for X. 805 (…) 821 The predicted classes. 822 “”” –> 823 proba = self.predict_proba(X) 825 if self.n_outputs_ == 1: 826 return self.classes_.take(np.argmax(proba, axis=1), axis=0) … 416 f”X has {n_features} features, but {self.__class__.__name__} ” 417 f”is expecting {self.n_features_in_} features as input.” 418 ) ValueError: X has 1561560 features, but RandomForestClassifier is expecting 58373 features as input.

エラーが発生しています。RandomForestClassifierは、fitメソッドで学習した特徴量の数と予測時の特徴量の数が一致しないと予測できません。

これは、テキストデータをベクトル化した後に、ナイーブベイズの予測結果を特徴量に追加しているためです。その結果、特徴量の数が増加してしまい、RandomForestClassifierの予測ができなくなっています。

修正するためには、ナイーブベイズの予測結果を特徴量に追加する代わりに、元の特徴量として使用する必要があります。具体的には、ナイーブベイズの予測結果を特徴量に追加する代わりに、元の特徴量を利用してRandomForestClassifierをトレーニングする必要があります。

以下のように修正できます:

python
# ナイーブベイズの予測を含む新しい特徴量を作成 nb_predictions = best_model.predict(X_test) X_rf = np.column_stack((X_test.toarray(), nb_predictions)) # ランダムフォレストのトレーニング rf_classifier = RandomForestClassifier() rf_classifier.fit(X_resampled, y_resampled) # テストデータでの予測と評価 y_pred_rf = rf_classifier.predict(X_test) accuracy_rf = accuracy_score(y_test, y_pred_rf) print("Random Forest Accuracy:", accuracy_rf) print("Random Forest Classification Report:") print(classification_report(y_test, y_pred_rf)) # テストデータでの予測確率を取得 y_proba_rf = rf_classifier.predict_proba(X_test) # AUCの計算 auc_rf = roc_auc_score(y_test, y_proba_rf, multi_class='ovr') # 多クラスの場合は'multi_class'を指定 print("Random Forest AUC:", auc_rf)

これにより、RandomForestClassifierの予測が実行されるようになります。

未分類

Posted by ぼっち