sklearn.pipeline.Pipeline 到底是什么?

2023-12-26

我不明白如何sklearn.pipeline.Pipeline完全有效。

里面有一些解释doc http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html。例如,它们的含义是什么:

带有最终估计器的变换管道。

为了让我的问题更清楚,什么是steps?它们如何工作?

Edit

感谢您的回答,我可以使我的问题更清楚:

当我调用管道并作为步骤传递两个变压器和一个估计器时,例如:

pipln = Pipeline([("trsfm1",transformer_1),
                  ("trsfm2",transformer_2),
                  ("estmtr",estimator)])

当我调用这个时会发生什么?

pipln.fit()
OR
pipln.fit_transform()

我不明白估算器如何成为变压器以及如何安装变压器。


变压器在 scikit-learn 中 - 一些具有 fit 和 transform 方法或 fit_transform 方法的类。

预测器- 一些具有拟合和预测方法或 fit_predict 方法的类。

Pipeline只是一个抽象概念,它不是一些现有的机器学习算法。通常,在 ML 任务中,您需要在应用最终估计器之前对原始数据集执行不同的转换序列(查找特征集、生成新特征、仅选择一些好的特征)。

Here http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_text_feature_extraction.html是 Pipeline 使用的一个很好的例子。 Pipeline 为您提供了一个用于所有 3 个转换步骤和结果估计器的界面。它在内部封装了转换器和预测器,现在您可以执行以下操作:

    vect = CountVectorizer()
    tfidf = TfidfTransformer()
    clf = SGDClassifier()

    vX = vect.fit_transform(Xtrain)
    tfidfX = tfidf.fit_transform(vX)
    predicted = clf.fit_predict(tfidfX)

    # Now evaluate all steps on test set
    vX = vect.fit_transform(Xtest)
    tfidfX = tfidf.fit_transform(vX)
    predicted = clf.fit_predict(tfidfX)

只需:

pipeline = Pipeline([
    ('vect', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', SGDClassifier()),
])
predicted = pipeline.fit(Xtrain).predict(Xtrain)
# Now evaluate all steps on test set
predicted = pipeline.predict(Xtest)

通过管道,您可以轻松地对该元估计器的每个步骤的参数集执行网格搜索。正如上面链接中所描述的。除最后一步之外的所有步骤都必须是变换,最后一步可以是变换器或预测器。回答编辑: 你打电话时pipln.fit()- 管道内的每个变压器将安装在前一个变压器的输出上(第一个变压器是在原始数据集上学习的)。最后一个估计器可以是转换器或预测器,仅当您最后一个估计器是转换器(分别实现 fit_transform 或分别实现转换和拟合方法)时,您才可以在管道上调用 fit_transform() ,仅当您可以在管道上调用 fit_predict() 或 Predict() 时你的最后一个估计器是预测器。所以你不能在管道上调用fit_transform或transform,最后一步是预测器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn.pipeline.Pipeline 到底是什么? 的相关文章

随机推荐