ValueError:NLP预测代码中的feature_names不匹配错误

时间:2020-03-17 20:32:25

标签: python tensorflow nlp data-science

编辑:该过程在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',......]

0 个答案:

没有答案