我正在尝试存储训练数据集后获取的TfIdf矢量化器/模型(不知道它是否是正确的单词),然后加载存储的模型以适合新数据集。 使用pickle存储和加载模型
我已经存储了在训练阶段获得的TfIdf词汇。然后,将存储的词汇加载到矢量化器以适合测试数据
def Savetfidf(df):
vectorizer = TfidfVectorizer(min_df=0.0, analyzer="char", sublinear_tf=True, ngram_range=(1,2))
X = pd.SparseDataFrame(vectorizer.fit_transform(df), columns = vectorizer.get_feature_names(), default_fill_value = 0)
pickle.dump(vectorizer.vocabulary_, open("features.pkl", "wb"))
return X
def Loadtfidf(df):
vectorizer = TfidfVectorizer(min_df=0.0, analyzer="char", sublinear_tf=True, ngram_range=(1,2))
vocabulary = pickle.load(open(feature, 'rb'))
vectorizer.vocabulary_ = vocabulary
X = pd.SparseDataFrame(vectorizer.transform(df), columns = vectorizer.get_feature_names(), default_fill_value = 0)
return X
我遇到错误
“ sklearn.exceptions.NotFittedError:idf向量不适合”
据我所知,它正在尝试使用idf_和vocabulary_分别保存整个“ X”。但是我只想存储模型/矢量化器(不知道),以便下次加载模型/矢量化器时,我只需要调用vectorizer.fit()作为测试数据,而无需使用训练数据调用fit_transform()。 有什么办法吗?