Новое в python и sklearn, так что извиняйтесь заранее. У меня два трансформатора, и я хотел бы собрать результаты в «FeatureUnion» (для окончательного этапа моделирования в конце). Это должно быть довольно просто, но FeatureUnion укладывает выходные данные, а не предоставляет массив nx2 или DataFrame. В приведенном ниже примере я буду генерировать некоторые данные, которые состоят из 10 строк по 2 столбца. Затем будут созданы две функции, состоящие из 10 строк по 1 столбцу. Я хотел бы, чтобы окончательный союз функций имел 10 строк и 1 столбец, но я получаю 20 строк по 1 столбцу.Связывание выходов трансформаторов в FeatureUnion
Я попытаюсь показать с моим примером ниже:
частью импорта
import numpy as np
import pandas as pd
from sklearn import pipeline
from sklearn.base import TransformerMixin
некоторых случайных данные
df = pd.DataFrame(np.random.rand(10, 2), columns=['a', 'b'])
обычаем трансформатор, который выбирает столбец
class Trans(TransformerMixin):
def __init__(self, col_name):
self.col_name = col_name
def fit(self, X):
return self
def transform(self, X):
return X[self.col_name]
трубопровод, который использует трансформатор дважды (в моем действительном случае у меня есть два различных трансформаторов, но это воспроизводящий проблему)
pipe = pipeline.FeatureUnion([
('select_a', Trans('a')),
('select_b', Trans('b'))
])
теперь я использовать трубопровод, но он возвращает массив удвоенной длины
pipe.fit_transform(df).shape
(20,)
однако мне нужен массив с размерами (10, 2).
Быстрое исправление?