如何对TF-IDF生成的csr_matrix向量求平均值并保持类型?
生成两类csr_matrix的平均向量(保持csr_matrix类型)
要计算两个csr_matrix类型向量集合的平均向量且结果仍为csr_matrix,核心是利用稀疏矩阵的原生运算避免转为稠密矩阵,步骤如下:
实现步骤
- 统计两类样本的数量
- 分别计算两类样本的列求和向量(即类别聚合向量)
- 对聚合向量求和后除以总样本数,再转为csr_matrix
具体代码
from scipy.sparse import csr_matrix # 统计两类样本的数量 count_a = a.shape[0] count_b = b.shape[0] total_count = count_a + count_b # 计算两类的聚合向量并求平均 sum_a = a.sum(axis=0) sum_b = b.sum(axis=0) avg_vector = (sum_a + sum_b) / total_count # 将结果转换为csr_matrix类型 avg_vector = csr_matrix(avg_vector)
说明
sum(axis=0)会沿列方向求和,得到对应类别的整体聚合向量,运算全程保持稀疏性,不会占用额外大量内存- 直接对聚合向量求和再除以总样本数,比先分别求平均再加权求和的效率更高
- 最终通过
csr_matrix()转换,确保输出结果仍为稀疏矩阵类型,适配后续稀疏矩阵相关操作
内容的提问来源于stack exchange,提问作者Manuel Ravasqueira
相关产品推荐
相关产品推荐

