scpiy: sp.tolil()

最近做一个多标签的任务,需要对预测的top k index计算precision和nDCG。必要的一步是确定预测的index是否在groundtruth中。groundtruth y_dev 是multi-hot形式,使用scipy中的稀疏矩阵存储。
判断i号样本的p号标签是否预测正确,只需要取 y_dev[i, p]的值即可(命中为1.0,不命中则为0.0),当数据量非常大时,访问的性能不可忽略。
scipy.sparse包下的稀疏矩阵有多种:
csr, csc, lil, dok和不支持位置索引取值的 coo, dia。

测试数据

wikipedia的一个多标签数据集的标签集合,是一个12959*29947的稀疏矩阵(12959个样本,29947个标签)

测试代码


测试结果



可以看到,13000次访问测试,列压缩稀疏矩阵csc是非常慢的,而链表稀疏矩阵lil则在50ms内就完成。因此在需要对稀疏矩阵的元素值做大量访问时,首先将待访问的稀疏矩阵做一个转换 sp.tolil() 是非常必要的。
        </div>

转于:https://blog.csdn.net/Futureer/article/details/79168149

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值