【问题标题】:Is any information lost by converting a fully dense array to a sparse matrix?将完全密集的数组转换为稀疏矩阵是否会丢失任何信息?
【发布时间】:2019-12-13 05:54:12
【问题描述】:

假设 A 是具有 tf-idf 值的 (scipy) 稀疏矩阵,B 是具有我数据的一些附加特征的 (numpy) 数组。

AB 的每一行对应同一个观察。

我想连接这些矩阵/数组,因为我想将它们传递给 sklearn ML 模型来训练它,我认为我不能单独传递它们。

根据这个答案 (https://stackoverflow.com/a/49420566/9024698),有两种方法可以连接这些数组:

  1. 将稀疏数组 (A) 转换为密集数组,然后连接
  2. 将全密集数组 (B) 转换为稀疏矩阵

但是,(1)在我的情况下基本上是不可能的,因为在我的情况下A 太大了。

因此,我可以考虑将完全密集的数组 (B) 转换为稀疏数组。

但是,我的问题是这样做会丢失任何信息(即将完全密集的数组转换为稀疏数组)吗?

这篇帖子 (How to combine TFIDF features with other features) 与我的帖子相关,但没有明确回答我的问题。

【问题讨论】:

  • 不,稀疏存储不会有损。您可以通过从密集数组创建稀疏矩阵、转换回(使用 .A.todense() 属性)并与原始数组进行比较来验证自己。
  • @PaulPanzer,好的,所以您的意思是在 Adense -> Asparse -> Adense_again 的情况下,Adense 和 Adense_again 绝对相同?
  • 是的,完全正确。你甚至可以直接比较Adense==Asparse,你会得到一个充满Trues 的(密集)数组。
  • @PaulPanzer,好的,听起来不错,谢谢。虽然我不确定这种稀疏表示是否会对我的 ML 模型产生任何(相当大的)差异。

标签: python numpy scikit-learn scipy sparse-matrix


【解决方案1】:

不,您不会丢失任何信息。在这种情况下,稀疏/密集是相同数据的两种不同表示。详情请见https://machinelearningmastery.com/sparse-matrices-for-machine-learning/

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2023-04-10
    • 2021-11-25
    • 2017-07-02
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多