————————————————————————— ValueError Traceback (most recent call last) Cell In[134], line 111 107 rf_classifier.fit(X_rf, y_test) 110 # テストデータでの予測を取得 –> 111 y_pred_rf = rf_classifier.predict(X_test) 113 # 分類器の評価 114 accuracy_rf = accuracy_score(y_test, y_pred_rf) 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) File /home/share/temp/venv/lib/python3.8/site-packages/sklearn/ensemble/_forest.py:865, in ForestClassifier.predict_proba(self, X) 863 check_is_fitted(self) 864 # Check data –> 865 X = self._validate_X_predict(X) … 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 58302 features, but RandomForestClassifier is expecting 58303 features as input.
エラーのメッセージによると、ランダムフォレストの予測時に、入力データの特徴量の数が正しくないようです。具体的には、入力データに期待されている特徴量の数は58303ですが、実際の入力データには58302の特徴量が含まれています。
これは、ナイーブベイズの予測を追加した新しい特徴量が、ランダムフォレストのトレーニング時とテスト時で一貫していないことを示しています。
この問題を解決するためには、ナイーブベイズで生成された予測値を含む新しい特徴量を追加する際に、全てのトレーニングデータとテストデータの両方に対して同じプロセスを実行する必要があります。つまり、ナイーブベイズで生成された予測値を含む新しい特徴量を、トレーニングデータとテストデータの両方に対して同じように追加する必要があります。
そのためには、テストデータにナイーブベイズの予測を追加するための適切な手順を確立する必要があります。その手順を実行し、新しい特徴量を含むテストデータを作成した後に、ランダムフォレストの予測を再度行ってください。

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