Python Pipeline仅显示一步

时间:2019-02-25 11:37:22

标签: python scikit-learn svm pipeline tf-idf

我首先尝试使用TfIdf为短文本创建SVM分类器。当我创建Pipeline时,首先进行验证并获得准确性得分-一切看起来都正确。

vectorizer = TfidfVectorizer(analyzer='word', ngram_range=(1,4), max_features=50000, max_df=0.5, use_idf=True, norm='l2') 
classifier = SGDClassifier(loss='hinge', max_iter=50, alpha=1e-05, penalty='l2')
pipe = Pipeline(steps=[('tfidf', vectorizer), ('clf', classifier)])
pipe.fit(X_train, y_train)

但是,当我加载创建的模型并进行打印时,我只会得到一个步骤-TfIdf,而不是两个步骤-TfIdf和SVM。

print(pipe)
Pipeline(memory=None,
     steps=[('tfidf', TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.float64'>, encoding='utf-8', input='content',
        lowercase=True, max_df=0.5, max_features=50000, min_df=1,
        ngram_range=(1, 4), norm='l2', preprocessor=None, smooth_idf=True...m_state=None, shuffle=True, tol=None,
       validation_fraction=0.1, verbose=0, warm_start=False))])

我假设我不了解管道的确切工作方式,但是在每个示例中,我看到的步骤与最初在管道中加载的步骤一样多。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

似乎直接打印管道的输出被截断了,并且没有显示整个输出。 例如,参数shuffle,tol,validation_fraction,verbose和warm_start属于SGDClassifier

您已在注释中发现自己,为避免被截断,可以直接使用pipeline.steps打印步骤。