Склеарн трубопровод с несколькими входами / выходами - PullRequest
0 голосов
/ 20 сентября 2019

Как мне построить конвейер 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)

Пожалуйста, помогите!

1 Ответ

1 голос
/ 20 сентября 2019

Да, это можно сделать, написав собственный преобразователь с функцией подгонки / преобразования.Это может быть ваш класс:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...