所有的估计器都应该实现拟合和变换

2024-09-28 22:23:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉机器学习。请帮我解决这个错误。以下是我的代码: 我正在尝试创建一个自定义类catEncoder()来转换我的分类变量。在

class DFSelector(BaseEstimator, TransformerMixin):
    def __init__(self, Attr):
        self.Attr = Attr
    def fit(self, X, y = None):
        return self
    def transform(self, X):
        print(self.Attr)
        return X[self.Attr].values

class catEncoder(BaseEstimator, TransformerMixin):
    def __init__(self):
        pass
    def fit(self, X, y = None):
        return self
    def transform(self, X):
        #Some-codes to encode variables
        return X.values

numPipeline = [
                ('selector', DFSelector(numAttr)),
                ('imputer', Imputer(strategy = 'median'))
]
catPipeline = [
                ('selector', DFSelector(catAttr)),
                ('encoder', catEncoder())
]
fullPipe = FeatureUnion(transformer_list = [
                                                ('nPipe', numPipeline),
                                                ('cPipe', catPipeline)
])
Xtrain_ready = fullPipe.fit_transform(Xtrain)

我得到以下错误

^{pr2}$

Tags: selfnonereturninitdef错误transformclass
1条回答
网友
1楼 · 发布于 2024-09-28 22:23:34

看一下文档,问题似乎是FeatureUnion需要一个形式为(string,transformer)的元组列表,其中transformer是transformer对象。但是,在您的例子中,它看起来像是传递形式的元组(string,[多个转换器])。我的建议是,在不全面了解ML逻辑的情况下,尝试将这些转换器列表拆分为单独的转换器,并将其传递给FeatureUnion。在

相关问题 更多 >