我试图使用FeatureUnion
从数据结构中提取不同的特征,但由于维度不同而失败:ValueError: blocks[0,:] has incompatible row dimensions
我的FeatureUnion
是按以下方式构建的:
features = FeatureUnion([
('f1', Pipeline([
('get', GetItemTransformer('f1')),
('transform', vectorizer_f1)
])),
('f2', Pipeline([
('get', GetItemTransformer('f2')),
('transform', vectorizer_f1)
]))
])
GetItemTransformer
用于从同一结构中获取数据的不同部分。这个想法在scikit学习问题跟踪器中描述了here。在
结构本身存储为{'f1': data_f1, 'f2': data_f2}
,其中data_f1
是不同长度的不同列表。在
由于Y向量与数据字段不同,我假设会发生错误,但是如何缩放向量以适应这两种情况呢?在
以下是对我有效的方法:
我不知道这是否适用于你的问题,但我们在稍微不同的情况下遇到了同样的错误,就解决了。在
我们的
f1
条目是15个数值的列表,我们需要对f2
执行tf idf。这就产生了关于不兼容行维度的相同错误。在在调试器中运行它之后,我们发现在
hstack()
调用FeatureUnion
:(2569,)
和(2659, 706)
时,矩阵的形状有细微的不同。在如果我们将
f1
转换为2D numpy数组,则形状更改为(2659, 15)
,并且hstack
调用起作用。在演员阵容是这样的:
f1 = np.array(list(f1))
。在相关问题 更多 >
编程相关推荐