Bor*_*lik 5 python scikit-learn
根据sklearn.pipeline.Pipeline文档,
管道具有管道中最后一个估计器具有的所有方法,即如果最后一个估计器是分类器,则管道可以用作分类器.如果最后一个估算器是变压器,那么管道也是如此.
以下示例使用自定义虚函数创建虚拟变换器f:
class C:
def fit(self, X, y=None):
print('fit')
return self
def transform(self, X):
print('transform')
return X
def f(self):
print('abc')
from sklearn.pipeline import Pipeline
ppl = Pipeline([('C', C())])
Run Code Online (Sandbox Code Playgroud)
我希望能够访问变压器的f功能C,但是调用会ppl.f()产生结果AttributeError: 'Pipeline' object has no attribute 'f'
我误解了文档吗?是否有一种良好可靠的方式来访问最后一个变压器的功能?
该Pipeline文档稍微夸大了事情。它具有其最后一个估计器的所有估计器方法。这些包括诸如predict(), fit_predict(), fit_transform(), transform(), decision_function(), predict_proba()....
它不能使用任何其他函数,因为它不知道如何处理管道中的所有其他步骤。对于大多数情况,您(X)可能会传递 或,并且 X 和/或 y 必须使用或(X,y)穿过管道中的每个链。fit_transform()transform()
访问最后一个估计器相当容易,如下所示:
ppl.steps[-1][1].f()
Run Code Online (Sandbox Code Playgroud)
但请记住,这样做会绕过管道中的先前步骤(即,如果您通过它X,它将不会与您的 StandardScaler 或您在管道中之前所做的任何操作一起缩放。)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |