2
我有一個數據框在python中,它有datetime提交'datetime'。使用管道和FeatureUnion我試圖提取日,月,工作日和isBusinessday。爲了提取我編寫自定義代碼的功能。sklearn管道正確的使用
我使用下面的代碼中提取日期,月份,星期和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()),
])),
])),
])
當我運行這段代碼我得到列表作爲輸出。例如說:
df = f_df.fit_transform(df_train[:5])
輸出:
[14 12 19 6 26 3 6 1 4 3] // it has both day and month. it is not expected output
但是,那時我白天和月是單獨的功能。我怎樣才能做到這一點 ?我的代碼出了什麼問題?有人能幫我找到它嗎?
UPDATE
總結一下我的問題,我得到的輸出形狀(10,)
,但我想我的輸出爲(5,2)
更新1按要求我添加了必要的代碼
class 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)
對於那些downvoted,請發表評論和投票 – Backtrack
FeatureUnion將水平堆疊來自內部變壓器的每個部分的數據。你可以顯示什麼'Extract_month'和'Extract_date'返回? –
@VivekKumar,我添加了必要的代碼。請看看它 – Backtrack