Используйте загруженную модель для прогнозирования, но получите эту ошибку > ValueError: X имеет 271 функцию, но DecisionTreeClassifier ожидает

#python #machine-learning

#питон #машинное обучение

Вопрос:

Я использую joblib, чтобы сохранить свою обученную модель, и загрузил ее в другой проект.

Проект 1

 model = DecisionTreeClassifier() model.fit(x_train, y_train)  predicted_model = model.predict(x_test) print(classification_report(y_test, predicted_model)) joblib.dump(model , 'model_jlb')  

Я хочу предсказать данные, которые я вырезал из Твиттера. Поэтому я обрезаю его и помещаю в кадр данных PDF. После предварительной обработки данных я векторизовал набор данных и использовал его в качестве прогноза.

Проект 2

 m_jlib = joblib.load('model_jlb') vec = CountVectorizer() x = data_with_index.text x_vec = vec.fit_transform(x.values) test_review_rate = m_jlib.predict(x_vec)  

и я получаю такой результат..

 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) lt;ipython-input-23-c808056524b7gt; in lt;modulegt;() ----gt; 1 test_review_rate = m_jlib.predict(x_vec)  3 frames /usr/local/lib/python3.7/dist-packages/sklearn/base.py in _check_n_features(self, X, reset)  394 if n_features != self.n_features_in_:  395 raise ValueError( --gt; 396 f"X has {n_features} features, but {self.__class__.__name__} "  397 f"is expecting {self.n_features_in_} features as input."  398 )  ValueError: X has 271 features, but DecisionTreeClassifier is expecting 16046 features as input.  

Я могу предсказать новый вклад в проект 1. Но когда он входит в проект 2, он не может этого сделать. Пожалуйста, помогите мне. Я не знаю, как это решить.

Комментарии:

1. Вы также должны сохранить и использовать свой старый счетчик и не подгонять новый к новому набору данных (иначе вы получите несоответствие функций, которое вы описываете). Вы можете легко сделать это с помощью конвейера sklearn.

2. @Djib2011 О… Я знаю, в чем проблема. Спасибо, ваш ответ действительно полезен.