提问者:小点点

如何保存skLearning管道/功能变压器


我有一个管道只包含一个功能联合,它有三组不同的功能,包括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/,仍然在努力让它工作。

    有没有更简单的方法来实现这一点?谢谢


  • 共2个答案

    匿名用户

    现在还不清楚你想要实现什么,你面临什么问题。据我所知,你试过这个

    我用过joblib。转储以保存此管道,但它生成的管道太多。npy文件,所以我不得不停止写作过程。这是一次相当愚蠢的尝试!

    由于这并不让你满意,你尝试了其他的选择。如果只想生成一个文件,可以执行以下操作:

    joblib.dump(pipeline, 'filename.pkl', compress = 1)
    

    另外,我强烈建议您下次插入一个最低可行的示例!

    匿名用户

    我会使用joblib。按第一个选项中的方式转储。多少*。它正在生成npy文件吗?有很多*有什么不对。npy文件?

    相关问题