【发布时间】:2016-03-21 15:47:37
【问题描述】:
我似乎在尝试将数字(连续)特征与因子相结合时遇到问题。我正在使用 Pandas DataFrames 输入模型。现在,我的代码适用于“性别”等因素,可以使用内置转换器轻松转换:
('gender', Pipeline([
('selector', ColumnSelector(column='gender')),
('dict', DictTransformer()),
('vect', DictVectorizer(sparse=False))
]))
但是当我尝试将其与数字因子(例如纬度)组合如下时,
('latitude', Pipeline([
('selector', ColumnSelector(column='latitude')),
('scaler', StandardScaler())
]))
我收到一个错误:
ValueError:所有输入数组的维数必须相同
这是我的 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]
显然我在这里遗漏了一些重要的东西。有什么想法吗?
【问题讨论】:
-
你能在管道的上下文之外工作的转换序列吗?管道可能使故障排除变得更加困难
-
我确信我能做到,而且我可能不得不这样做,但这并不能解决这个问题。管道结合 FeatureUnion 看起来真的很方便,所以我想弄清楚如何使这项工作。
-
这个错误究竟来自哪里?文件/行号。此外,如果您想使用不同的转换器转换每一列 - 请查看 stackoverflow.com/a/34202758/1030820
标签: python machine-learning scikit-learn