【问题标题】:TfidfVectorizer - Vocabulary wasn't fittedTfidfVectorizer - 未安装词汇表
【发布时间】:2020-06-04 04:34:30
【问题描述】:

导入模型并在单个输入上运行预测的代码

Tfidf_vect = TfidfVectorizer(max_features=5000) # Same classifier as I used in the model
Train_X_IP = Tfidf_vect.transform(["change in the meaning"]).toarray() #Passing the input 
loaded_model = pickle.load(open("finalized_model.sav", 'rb')) #loading the model

predictions_SVM = loaded_model.predict_proba(Train_X_IP)
print(predictions_SVM)


Error I get : TfidfVectorizer - Vocabulary wasn't fitted.

我看到很多文章提出了很多方法,到目前为止我尝试过

添加 fit_transform 而不是 Tfidf_vect.transform 但这并没有解决问题

我尝试的第二个选项,外部加载 Tfidfvectorizer

 Tfidf_vect = TfidfVectorizer(max_features=5000)
 import pickle
 pickle.dump(Tfidf_vect, open("vectorizer.pickle", "wb"))  
 multilabel_binarizer = joblib.load('vectorizer.pickle')
 Still get the same error : TfidfVectorizer - Vocabulary wasn't fitted.

这是使用模型和矢量化器的正确方法吗? ?

【问题讨论】:

  • 错误提示您需要先安装转换器,然后才能对新数据进行预测/转换。

标签: python machine-learning scikit-learn svm tfidfvectorizer


【解决方案1】:

您首先需要用于训练模型的相同矢量化器。我假设您在训练期间会使用“fit”或“fit_transform”函数。完成后,将矢量化器保存为 joblib 格式的 pickle。然后将其重新加载,并对新数据使用变换函数进行预测。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 2017-10-26
    • 2018-08-31
    • 2019-12-04
    • 2020-08-01
    • 2019-06-17
    • 2020-06-13
    • 1970-01-01
    相关资源
    最近更新 更多