我似乎遇到了試圖將數字(連續)功能與因素結合起來的問題。我正在使用Pandas DataFrame輸入模型。現在,我的代碼工作與像「性別」,可以使用內置的變壓器很容易地轉化因素:如何在scikit-learn Pipelines中結合數字和分類特徵?
('gender', Pipeline([
('selector', ColumnSelector(column='gender')),
('dict', DictTransformer()),
('vect', DictVectorizer(sparse=False))
]))
但是,當我試圖在結合了數字因子(如緯度)如下,
('latitude', Pipeline([
('selector', ColumnSelector(column='latitude')),
('scaler', StandardScaler())
]))
我得到一個錯誤:
ValueError: all the input arrays must have same number of dimensions
這裏是我的ColumnSelector()代碼:
class ColumnSelector(TransformerMixin):
"""
Class for building sklearn Pipeline step. This class should be used to select a column from a pandas data frame.
"""
def __init__(self, column):
self.column = column
def fit(self, x, y=None):
return self
def transform(self, data_frame):
return data_frame[self.column]
顯然我錯過了重要的東西在這裏。有任何想法嗎?
你能轉換的序列在管道的上下文之外工作嗎?管道可能會使故障排除更加困難 – Ryan
我確信我可以做到這一點,但我可能必須這樣做,但這並不能解決此問題。與FeatureUnion結合的管道看起來非常方便,所以我想弄清楚如何使這項工作。 –
這個錯誤究竟是從哪裏來的?文件/行號。另外,如果你想用不同的轉換器轉換每一列 - 看看http://stackoverflow.com/a/34202758/1030820 –