如何解决vectorizor.tranform(fd_norm)中的错误
encoder = LabelEncoder()
vectorizer = CountVectorizer()
lis=[description]
lis1=[name_predict]
lis2=[text_predict]
lis_df=pd.DataFrame(lis,columns=['description'])
lis1_df=pd.DataFrame(lis1,columns=['name'])
lis2_df=pd.DataFrame(lis2,columns=['text'])
pred_df=pd.concat([lis_df,lis1_df,lis2_df],axis=1)
fd=pred_df.iloc[ : , : ].values
fd_norm=[normalize_text(s) for s in fd]
predV=vectorizer.transform(fd_norm)
fname='gender_predictor.sav'
model=pickle.load(open(fname,'rb'))
fresnel=model.predict(predV)
fresnel_label=encoder.inverse_transform(fresnel)
self.gender.setText(fresnel_label)错误:
Traceback (most recent call last):
File "the_linking.py", line 162, in predict
predV=self._vectorizer.transform(fd_norm)
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\feature_extraction\text.py", line 890, in transform
self._check_vocabulary()
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\feature_extraction\text.py", line 278, in _check_vocabulary
check_is_fitted(self, 'vocabulary_', msg=msg),
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 690, in check_is_fitted
raise _NotFittedError(msg % {'name': type(estimator).__name__})
sklearn.exceptions.NotFittedError: CountVectorizer - Vocabulary wasn't fitted.发布于 2018-03-22 07:17:26
在调用transform()之前,必须调用fit()或fit_transform()一次,以便模型能够了解数据的频率。尝试:
predV=vectorizer.fit_transform(fd_norm)编码器也是如此。我认为你之前对数据进行了转换,然后对模型进行了训练。但是从那里开始,您只保存了model,而没有保存矢量器。在保存模型时,需要同时保存vectorizer和encoder,以便能够再次使用它们。以与模型相同的方式加载它们,并使用它们(在本例中不调用fit() )。
https://stackoverflow.com/questions/49422283
复制相似问题