РЕДАКТИРОВАТЬ: процесс завершается с ошибкой ниже 15 000 записей, а не 100 000.
Я создал и внедрил модель NLP, которая по какой-то причине работает, только когда я бросаю в нее большое количество записей для прогнозирования.
Модель была построена с использованием около 80 000 записей исторических данных. Я сохранил модель в виде файла JobLib. Когда я прошу модель сделать новые прогнозы, она отлично работает, если количество записей не превышает 15 000. Кажется, это магическое число, но я не понимаю, почему. Ниже приведен соответствующий код.
Все, что находится над этими строками, - это просто извлечение и очистка данных.
model = jl.load('ReasonPrediction.joblib')
tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
tfidf_comments = tfidf_vect.fit_transform(LabTechComments['LabTechCommentsCombined'])
LabTechComments['ReasonEncoded'] = model.predict(tfidf_comments.tocsc())
Последняя строка вспыхивает с ошибкой «ValueError: несоответствие feature_names». Я погуглил ошибку, но то, что я нашел, не имело смысла, потому что я не строил модель. Модель построена. Я просто запускаю прогнозы для новых данных, и я не понимаю, почему я получаю эту ошибку ТОЛЬКО, если количество записей меньше 15 000. Поскольку функции превращаются в вектор, я не уверен, как это связано. Ниже приведена большая часть ошибки с обрезкой большей части вектора.
ValueError Traceback (most recent call last)
<ipython-input-35-ff67c5651684> in <module>
----> 1 LabTechComments['ReasonEncoded'] = model.predict(tfidf_comments.tocsc())
C:\ProgramData\Anaconda3\lib\site-packages\xgboost\sklearn.py in predict(self, data, output_margin, ntree_limit, validate_features)
789 output_margin=output_margin,
790 ntree_limit=ntree_limit,
--> 791 validate_features=validate_features)
792 if output_margin:
793 # If output_margin is active, simply return the scores
C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in predict(self, data, output_margin, ntree_limit, pred_leaf, pred_contribs, approx_contribs, pred_interactions, validate_features)
1282
1283 if validate_features:
-> 1284 self._validate_features(data)
1285
1286 length = c_bst_ulong()
C:\ProgramData\Anaconda3\lib\site-packages\xgboost\core.py in _validate_features(self, data)
1688
1689 raise ValueError(msg.format(self.feature_names,
-> 1690 data.feature_names))
1691
1692 def get_split_value_histogram(self, feature, fmap='', bins=None, as_pandas=True):
ValueError: feature_names mismatch: ['f0', 'f1', 'f2', 'f3', 'f4', 'f5',......]