2
新的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)的數組。
快速修復?