【发布时间】:2019-12-13 05:54:12
【问题描述】:
假设 A 是具有 tf-idf 值的 (scipy) 稀疏矩阵,B 是具有我数据的一些附加特征的 (numpy) 数组。
A 和B 的每一行对应同一个观察。
我想连接这些矩阵/数组,因为我想将它们传递给 sklearn ML 模型来训练它,我认为我不能单独传递它们。
根据这个答案 (https://stackoverflow.com/a/49420566/9024698),有两种方法可以连接这些数组:
- 将稀疏数组 (
A) 转换为密集数组,然后连接 - 将全密集数组 (
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