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