Ich habe einen Datenrahmen in Python und es hat Datetime-Datei namens 'Datetime'. Mit Pipeline und FeatureUnion versuche ich Tag, Monat, Wochentag und isBusinessday zu extrahieren. Um diese Funktionen zu extrahieren, habe ich einen benutzerdefinierten Code geschrieben.sklearn Pipeline korrekte Verwendung
ich den folgenden Code bin mit Tag, Monat zu extrahieren, Wochentag und isBusinessday
class itemselector(BaseEstimator, TransformerMixin):
def __init__(self, key):
self.key = key
def transform(self, X):
return X[self.key]
def fit(self, X, y=None):
return self
f_df = Pipeline([
('union', FeatureUnion([
('date', Pipeline([
('sitem', itemselector('pickup_datetime')),
('sday', Extract_date()),
])),
('month', Pipeline([
('sitem', itemselector('pickup_datetime')),
('smonth', Extract_month()),
])),
])),
])
Wenn ich diesen Code ausführen i-Liste als Ausgang immer bin. Sagen Sie zum Beispiel:
df = f_df.fit_transform(df_train[:5])
Ausgang:
[14 12 19 6 26 3 6 1 4 3] // it has both day and month. it is not expected output
Aber ich war Tag und Monat separate Funktionen zu sein. Wie kann ich das machen ? Was ist in meinem Code falsch gelaufen? Kann mir jemand helfen, es zu finden?
UPDATE
mein Problem zusammenzufassen, erhalte ich Ausgangsform (10,)
aber ich meine Ausgabe (5,2)
Aktualisiert vor 1 gemäß der Anfrage i hinzugefügt notwendigen Code
sein wollenclass Extract_date(BaseEstimator, TransformerMixin):
def fit(self, X):
print('one')
return self
def transform(self, X):
return X.apply(lambda y: y.day)
class Extract_month(BaseEstimator, TransformerMixin):
def fit(self, X, **atr):
print('two')
return self
def transform(self, X):
return X.apply(lambda y: y.month)
Für diejenigen, die downvoted, hinterlassen Sie bitte einen Kommentar und down vote – Backtrack
FeatureUnion wird die Daten von jedem Teil der internen Transformatoren horizontal stapeln. Kannst du zeigen, was 'Extract_month' und 'Extract_date' zurückgibt? –
@VivekKumar, ich habe notwendigen Code hinzugefügt. Bitte schau es dir an – Backtrack