我似乎遇到了试图将数字(连续)功能与因素结合起来的问题。我正在使用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 –