您的位置:首页 > 编程语言 > Python开发

Python scipy.sparse 稀疏矩阵访问速度测试

2018-01-26 00:58 531 查看
最近做一个多标签的任务,需要对预测的top k index计算precision和nDCG。必要的一步是确定预测的index是否在groundtruth中。groundtruthy_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() 是非常必要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息