Introduction to Sparse Matrices for Machine Learning
什么是稀疏矩阵?
大部分包含零值的矩阵称为稀疏矩阵(sparse Matrices),相对应的是大多数值非零的密集矩阵(Dense Matrices)。稀疏矩阵在机器学习领域非常常见,如计数类数据,或者one-hot encoding编码的数据等。数据的稀疏性可以通过零值的比例量化(sparsity = count zero elements / total elements)。稀疏矩阵会产生处理时间和存储空间的问题。而SciPy提供了很多高效的方法可以直接用于存储和处理稀疏矩阵。
稀疏矩阵数据处理——SciPy
SciPy中提供了多种数据结构可以有效处理稀疏矩阵,如:
Dictionary of Keys: 一个字典使用行和列索引映射出一个值
List of Lists: 每行作为一个list存储,每个list里包含column index和值
Coordinate List: 存储一个元组列表,每个元组包含行索引,列索引和值
Compressed Sparse Row (CSR) : 使用三个一维数组表示非零值,行范围和列索引。在机器学习中经常使用。
Compressed Sparse Column: 对列索引进行压缩并在行索引之前先读取
示例:
1 | from numpy import array |
稀疏矩阵与机器学习
python的sklearn模块很多模型可以使用sparse数据结构作为输入。
参考资料
https://machinelearningmastery.com/sparse-matrices-for-machine-learning/