我有一个简单的 scikit-learnPipeline
共两个步骤:aTfIdfVectorizer
随后是一个LinearSVC
.
我已经使用我的数据拟合了管道。都好。
现在我想使用我的拟合来转换(而不是预测!)一个项目pipeline
.
I tried pipeline.transform([item])
,但与以下相比,它给出了不同的结果pipeline.named_steps['tfidf'].transform([item])
。甚至结果的形状和类型也不同:第一个是 1x3000 CSR 矩阵,第二个是 1x15000 CSC 矩阵。哪一个是正确的?为什么它们不同?
使用 scikit-learn 时,如何转换项目,即在最终估计器之前获取项目的向量表示Pipeline
?
您无法在最后一步包含非转换器的管道上调用转换方法。
如果您不想在此类管道上调用 transfrom,则最后一个估计器必须是变压器。
Even transform方法文档 https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline.transform这么说:
对数据应用变换,以及变换方法
最终估计器。仅当最终估计器实现时才有效转换.
此外,没有方法可以使用除最后一个估计器之外的所有估计器。
您可以创建自己的 Pipeline,并继承 scikit-learn Pipeline 中的所有内容,但添加一种方法,例如:
def just_transforms(self, X):
"""Applies all transforms to the data, without applying last
estimator.
Parameters
----------
X : iterable
Data to predict on. Must fulfill input requirements of first step of
the pipeline.
"""
Xt = X
for name, transform in self.steps[:-1]:
Xt = transform.transform(Xt)
return Xt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)