【发布时间】:2019-12-13 05:04:24
【问题描述】:
为了进一步解释我的用例,A 是一个带有 tf-idf 值的稀疏矩阵,B 是一个包含我数据的一些附加特征的数组。
我已经拆分为训练集和测试集,所以在我的示例中,A 和 B 仅与训练集有关。我(想)在这段代码之后对测试集做同样的事情。
我想连接这些矩阵/数组,因为我想将它们传递给sklearn ML 模型来训练它,我认为我不能单独传递它们。
所以我尝试这样做:
C = np.concatenate((A, B.T), axis=1)
其中 A 是 <class 'scipy.sparse.csr.csr_matrix'>,B 是 <class 'numpy.ndarray'>。
但是,当我尝试这样做时,我收到以下错误:
ValueError: zero-dimensional arrays cannot be concatenated
另外,我认为`np.concatenate` a numpy array with a sparse matrix 的想法对我来说不是很好,因为
- 基本上不可能将我的稀疏数组
A转换为密集数组,因为它太大了 - 如果我将完全密集的数组
B转换为稀疏数组,我将丢失(或者实际上没有??)信息
向sklearn ML 模型传递由行连接的稀疏和完全密集数组的最佳方法是什么?
【问题讨论】:
-
你希望结果是一个数组吗?您可以使用
A.A将稀疏矩阵转换为数组 -
@user3483203,嗯,我明白你的意思了。我的稀疏矩阵太大,无法将其转换为数组。理想情况下,我希望输出一个“混合”数组,其中一部分是稀疏矩阵,另一部分是数组。
-
numpy不可能做到这一点。您的最终用例是什么? -
@user3483203,基本上稀疏矩阵是 tf-idf 数据,数组是一些附加特征。我想要一个最终的串联数组,以便我可以将它传递给 ML 模型(例如随机森林)并对其进行训练等。我认为您不能在
sklearn?
标签: python numpy scikit-learn scipy concatenation