我无法弄清楚 sklearn.pipeline.Pipeline
是如何工作的。
在 doc 中有一些解释。例如,它们是什么意思:
为了让我的问题更清楚,什么是 steps
?它们是如何工作的?
编辑
感谢这些答案,我可以让我的问题更清楚:
当我调用管道并通过,作为步骤,两个转换器和一个估计器,例如:
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 是管道使用的一个很好的例子。
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)
使用管道,您可以轻松地对该元估计器的每个步骤的参数集执行网格搜索。如上面的链接所述。除了最后一步之外的所有步骤都必须是变换,最后一步可以是更改器(mutator)或预测器。
编辑 的答案:
当您调用
pipln.fit()
时 - 管道内的每个变压器都将安装在前一个变压器的输出上(第一个变压器是在原始数据集上学习的)。最后一个估计器可能是转换器或预测器,只有当最后一个估计器是转换器(实现 fit_transform,或分别实现转换和拟合方法)时,您才能在管道上调用 fit_transform(),只有在以下情况下,您才能在管道上调用 fit_predict() 或 predict()您的最后一个估算器是预测器。所以你不能在管道上调用 fit_transform 或转换,其中最后一步是预测器。关于python - sklearn.pipeline.Pipeline 到底是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33091376/