【发布时间】:2019-07-18 19:20:01
【问题描述】:
我尝试使用 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))])
我假设我不了解 Pipeline 的确切工作原理,但在我看到的每个示例中,步骤与最初加载到 Pipeline 中的步骤一样多。
感谢您的帮助!
【问题讨论】:
-
这是因为输出被截断了。参数 shuffle、tol、validation_fraction、verbose 和 warm_start 属于 SGDClassifier。
-
@justhalf 非常感谢!如何查看整个输出?
-
@justhalf Upd: pipeline.steps =) 我怎样才能支持你的答案?非常感谢您的帮助!
-
这是一条评论。让我将其更改为实际答案。
标签: python scikit-learn svm pipeline tf-idf