Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何保存sklearn管道/功能转换器_Python_Nlp_Scikit Learn - Fatal编程技术网

Python 如何保存sklearn管道/功能转换器

Python 如何保存sklearn管道/功能转换器,python,nlp,scikit-learn,Python,Nlp,Scikit Learn,我有一个管道只包含一个功能联合,它有三组不同的功能,包括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

我有一个管道只包含一个功能联合,它有三组不同的功能,包括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.词汇表,因此

    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_测试=管道2.转换(X_测试)

它说“NotFitteError:idf vector not fitted”。然后我使用了fit_变换而不是transform,但它生成了一个包含不同值的特征向量(与正确的特征向量相比)。然后我继续使用,但仍在努力使其正常工作


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

我会使用第一个选项中的joblib.dump。它会生成多少个*.npy文件?有很多*.npy文件有什么问题?

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

我使用了joblib.dump来保存这个管道,但是它生成了太多的.npy文件,所以我不得不停止编写过程。这是一个相当愚蠢的尝试

由于这并不能让您满意,您尝试了其他一些选择。如果您只想生成一个文件,您可以这样做:

joblib.dump(pipeline, 'filename.pkl', compress = 1)
另外,我强烈建议您下次插入一个最低可行的示例