在 sklearn 中编写自定义转换器 which returns .predict of estimator in .transform

Write custom transformer in sklearn which returns .predict of estimator in .transform

我们有一个自定义转换器

class EstimatorTransformer(base.BaseEstimator, base.TransformerMixin):

    def __init__(self, estimator):
        self.estimator = estimator

    def fit(self, X, y):
        self = self.estimator.fit(X,y)
        return self

    def transform(self, X):
        return self.estimator.predict(X)

还有一个断言语句

city_trans = EstimatorTransformer(city_est)
city_trans.fit(features,target)
assert ([r[0] for r in city_trans.transform(data[:5])]
        == city_est.predict(data[:5]))

其中

city_est is the estimator we can pass. I am using city_est = city_est = Ridge(alpha = 1)

但我在 self = self.estimator.fit(X,y) 中遇到错误。我在这里可能做错了什么。我知道 fit() returns self。我应该如何使这个断言起作用?

您在这一行中的赋值错误:

self = self.estimator.fit(X,y)

这里,self 是当前的 class (EstimatorTransformer),您正试图为其分配一个不同的 class.

你可以只写:

def fit(self, X, y):
    self.estimator.fit(X,y)
    return self

它会起作用。