Neu bei Python und sklearn so Entschuldigung im Voraus. Ich habe zwei Transformatoren und möchte die Ergebnisse in einer FeatureUnion sammeln (für einen letzten Modellierungsschritt am Ende). Dies sollte recht einfach sein, aber FeatureUnion stapelt die Ausgaben, anstatt ein nx2-Array oder DataFrame bereitzustellen. Im folgenden Beispiel werde ich einige Daten erzeugen, die 10 Zeilen mal 2 Spalten umfassen. Dies erzeugt dann zwei Funktionen, die 10 Zeilen mal 1 Spalte sind. Ich möchte, dass die letzte Feature-Vereinigung 10 Zeilen und 1 Spalte hat, aber was ich bekomme, sind 20 Zeilen mal 1 Spalte.Binding Ausgänge von Transformatoren in FeatureUnion
Ich werde versuchen, mit meinem Beispiel zu demonstrieren, unter:
einige Importen
import numpy as np
import pandas as pd
from sklearn import pipeline
from sklearn.base import TransformerMixin
einige zufälligen Daten
df = pd.DataFrame(np.random.rand(10, 2), columns=['a', 'b'])
ein benutzerdefinierter Transformator, das eine Spalte
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]
wählt
, eine Pipeline, die den Transformator zweimal verwendet (in meinem realen Fall I habe zwei verschiedene Transformatoren aber diese reproduzieren das Problem)
pipe = pipeline.FeatureUnion([
('select_a', Trans('a')),
('select_b', Trans('b'))
])
jetzt verwende ich die Pipeline, aber es gibt einen Array von doppelter Länge
pipe.fit_transform(df).shape
(20,)
aber ich möchte ein Array mit Abmessungen (10, 2).
Schnellkorrektur?