#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 О… Я знаю, в чем проблема. Спасибо, ваш ответ действительно полезен.