【问题标题】:sklearn pipeline with multiple inputs/outputs具有多个输入/输出的 sklearn 管道
【发布时间】:2019-09-20 20:55:07
【问题描述】:

如何构建 sklearn 管道来执行以下操作?

我有什么:

A, B = getAB(X_train)
X_train = transform(X_train)
model(A, B, X_train)

我想要什么:

pipe = Pipeline([
(‘ab’, getAB),
(‘tranf’, transform),
(‘net’, net)
]
pipe.fit(X_train, y_train)

请帮忙!

【问题讨论】:

  • 不清楚AB 应该代表什么。 model 应该是什么?一些估计器的实例化,还是拟合?

标签: scikit-learn pytorch


【解决方案1】:

是的,可以通过编写具有拟合/转换功能的自定义转换器来实现。这可以是你的班级:

from sklearn.base import BaseEstimator, TransformerMixin

def getABTransformer(BaseEstimator, TransformerMixin):
    def __init__(self): # no *args or **kargs
        pass

    def fit(self, X, y=None):
        return self # nothing else to do

    def transform(self, X, y=None):
        return getAB(X)

然后您可以创建您的ColumnTransformer,如下所示:

from sklearn.compose import ColumnTransformer

clm_pipe = ColumnTransformer([
(‘ab’, getABTransformer, np.arange(0, len(X_train)),  # list of columns indices
(‘tranf’, transform, np.arange(0, len(X_train))),  # list of columns indices
]

以及带有模型的最终管道:

pipe = Pipeline([
(‘clm_pipe’, clm_pipe),
(‘net’, net)
]

你可以阅读更多关于ColumnTransformer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2018-09-11
    • 2021-08-14
    • 2019-03-18
    • 2018-06-01
    相关资源
    最近更新 更多