从Transformer / Regressor内部访问sklearn管道

时间:2018-08-14 13:21:37

标签: python python-3.x scikit-learn

是否可以从管道中使用的对象之一中访问scikit-learn管道。我想访问named_steps内部管道的Regressor属性,如下所示:

from sklearn.pipeline import make_pipeline

class Transform(object):
    def fit(self, X, y=None):
        print("Transform.fit")
        return self

    def transform(self, X):
        print("Transform.transform")
        return X

class Regressor(object):
    def fit(self, X, y=None):
        print("Regressor.fit")
        # Can I get the named_steps attribute from
        # the pipeline that Regressor is part of here

    def predict(self, X):
        print("Regressor.predict")

model = make_pipeline(Transform(), Regressor())
print(model.steps)
print("Begin Fit")
model.fit(1)
print("End Fit")
print("Begin Predict")
model.predict(1)
print("End Predict")

我要这样做的原因是要在回归器之前访问使用哪个变压器。

编辑: 详细地说,我正在编写一些我在管道中一起使用的自定义转换器和回归对象。

我想做的一件事就是让回归对象更改行为,这取决于之前有多少个转换器对象。初始化回归器类时,我可以明确地将其指定为变量,但理想情况下,我不想这样做。

我想做的第二件事是使回归器既可以用作转换器也可以用作回归器(我可能必须重写管道类中的某些功能)。如果使用了回归变量来转换数据,则任何即将在管道中使用的回归变量都需要更改其行为。

0 个答案:

没有答案