私はPythonでデータフレームを持っていて、それはdatetimeという名前のdatetimeフィールドを持っています。パイプラインとFeatureUnionを使用私は、曜日、月、平日とisBusinessdayを抽出しようとしています。これらの機能を抽出するために、私はカスタムコードを書いています。私は出力としてリストを取得していますこのコードを実行するとsklearnパイプラインの正しい使い方
私は日、月、曜日を抽出するために、次のコードを使用して
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()),
])),
])),
])
isBusinessday
ています。出力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)
コメントを残してください。 – Backtrack
FeatureUnionは内部トランスの各部からのデータを水平に積み重ねます。 'Extract_month'と' Extract_date'が返すものを表示できますか? –
@VivekKumar、私は必要なコードを追加しました。それを見てください – Backtrack