我有一个管道只包含一个功能联合,它具有三组不同的功能,包括tfidf:
A_vec = AVectorizer()
B_vec = BVectorizer()
tfidf_vec = TfidfVectorizer(ngram_range=(1,2), analyzer='word', binary=False, stop_words=stopWords, min_df=0.01, use_idf=True)
all_features = FeatureUnion([('A_feature', A_vec), ('V_feature', B_vec), ('tfidf_feature', tfidf_vec)])
pipeline = Pipeline([('all_feature', all_features)])
我想为我的测试数据保存这个流水线功能转换器(我使用LibSVM进行分类),这就是我尝试过的:
我使用了joblib.dump来保存这个管道,但它生成了太多的.npy文件,所以我不得不停止写入过程。这是一次相当愚蠢的尝试!
我保存了tfidf_vec.vocabulary_,因此
tfidf_vec2 = TfidfVectorizer(ngram_range =(1,3),analyzer ='word',binary = False,stop_words = stopWords,min_df = 0.01,use_idf = True,词汇= pickle.load(打开(“../ vocab) .pkl“,”rb“))
......
feat_test = pipeline2.transform(X_test)
它说“NotFittedError:idf vector not fit”。然后我使用fit_transform而不是变换,但它生成一个包含不同值的特征向量(与正确的特征向量相比)。然后我跟着http://thiagomarzagao.com/2015/12/08/saving-TfidfVectorizer-without-pickles/继续努力让它发挥作用。
有没有更简单的方法来实现这一目标?谢谢!
答案 0 :(得分:0)
我会在第一个选项中使用joblib.dump。它产生了多少个* .npy文件?有很多* .npy文件有什么问题?
答案 1 :(得分:0)
目前尚不清楚您想要实现什么以及面临什么问题。 据我了解,您尝试过
我已经使用joblib.dump保存该管道,但是它生成了太多.npy文件,因此我不得不停止编写过程。这是一个相当愚蠢的尝试!
由于这不能满足您的要求,因此您尝试了其他一些替代方法。好吧,如果您只想生成一个文件,则可以执行以下操作:
joblib.dump(pipeline, 'filename.pkl', compress = 1)
此外,我强烈建议您下次插入最小可行示例!