我有一个管道只包含一个功能联合,它有三组不同的功能,包括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。转储以保存此管道,但它生成的管道太多。npy文件,所以我不得不停止写作过程。这是一次相当愚蠢的尝试!
我救了tfidf_vec。词汇,因此
tfidf_vec2=TfidfVectorizer(ngram_range=(1,3),analyzer='word',binary=False,stop_words=stopWords,min_df=0.01,use_idf=True,词汇=pickle。加载(打开(“../vocab.pkl”,“rb”))
......
feat_test=pipeline2.transform(X_test)
它表示"NotFittedError: idf向量未拟合"。然后我使用fit_transform而不是变换,但它生成一个包含不同值的特征向量(与正确的特征向量进行比较)。然后我跟着http://thiagomarzagao.com/2015/12/08/saving-TfidfVectorizer-without-pickles/,仍然在努力让它工作。
有没有更简单的方法来实现这一点?谢谢
现在还不清楚你想要实现什么,你面临什么问题。据我所知,你试过这个
我用过joblib。转储以保存此管道,但它生成的管道太多。npy文件,所以我不得不停止写作过程。这是一次相当愚蠢的尝试!
由于这并不让你满意,你尝试了其他的选择。如果只想生成一个文件,可以执行以下操作:
joblib.dump(pipeline, 'filename.pkl', compress = 1)
另外,我强烈建议您下次插入一个最低可行的示例!
我会使用joblib。按第一个选项中的方式转储。多少*。它正在生成npy文件吗?有很多*有什么不对。npy文件?