代码之家  ›  专栏  ›  技术社区  ›  Outcast

scipy稀疏矩阵与numpy数组的连接

  •  1
  • Outcast  · 技术社区  · 5 年前

    为了解释更多关于我的用例的事情, A 是一个具有tf idf值和 B 是一个具有我的数据的一些附加功能的数组。

    我已经分头训练和测试了 在我的例子中只是关于训练集。在这段代码之后,我(想)对测试集执行同样的操作。

    我想连接这些矩阵/数组,因为然后我想将它们传递给 sklearn ml模型来训练它,我不认为我可以单独通过它们。

    所以我试着这么做:

    C = np.concatenate((A, B.T), axis=1)
    

    其中a是 <class 'scipy.sparse.csr.csr_matrix'> B是A <class 'numpy.ndarray'> .

    但是,当我尝试执行此操作时,会出现以下错误:

    ValueError: zero-dimensional arrays cannot be concatenated
    

    而且,我不认为 `np.concatenate` a numpy array with a sparse matrix 对我来说很好,因为

    1. 基本上不可能隐藏我的稀疏阵列 因为它太大了
    2. 我会输的 信息如果我转换我的完全密集数组 到稀疏数组

    最好的方法是什么 斯克林 ml模型一个由行连接的稀疏和完全密集的数组?

    0 回复  |  直到 5 年前
        1
  •  2
  •   Mohsin hasan    5 年前
    1. 你可以用 hstack 来自西皮。 高温超导堆 将两个矩阵都转换为scipy coo_matrix ,合并它们并默认返回COO矩阵。

    2. 将密集数组转换为稀疏数组时不会丢失任何信息。稀疏矩阵只是紧凑的数据存储格式。另外,除非指定参数的值 dtype 属于 高温超导堆 一切都是 upcasted . 因此,也不存在数据丢失的可能性。

    进一步 ,如果计划使用来自sklearn的logistic回归,则稀疏矩阵必须位于 企业社会责任 格式 fit 工作方法。

    以下代码适用于您的用例

    from scipy.sparse import hstack
    
    X = hstack((A, B), format='csr')