可扩展处理csr矩阵的实用函数
csr-utils的Python项目详细描述
企业社会责任
企业社会责任矩阵的可扩展操作
安装
对于一般用户,如果使用conda等:
pip install csr_utils
没有根访问:
pip install --user csr_utils
用法
>>> import numpy as np
>>> from scipy.sparse import csr_matrix
>>> xcsr = csr_matrix(np.array([[1, 0], [3, 4], [2, 2]], dtype=float))
>>> import csr_utils
>>> xnorm, xmean, xstd, xixnormed = normalize_csr_matrix(xcsr)
概述
这个包目前只有一个快速和内存效率高的实现,用于规范化CSR数组的非零值,而不取消对函数的稀疏这对于大矩阵的机器学习是非常有用的大多数算法在规范化输入下工作得更好,特别是常用的linear classification models in sklearn
随着需求的增加,将增加更多的功能,包括将csr数组直接转换为cuda稀疏数组敬请期待。
标准化CSR矩阵:
仅基于非零值规范化CSR矩阵,而不将其转换为密集数组
- 在csr矩阵中,行对应于样本,列对应于特征。
- 标准化将使每个列(特征)的非零值的平均值为0.0,标准偏差为1.0
返回x= x.toRayay-()的可伸缩等价;x[(x= 0)]=npNa;(x-np.nNeMax(x,轴=0))/np.nnStD(x,轴=0)
我们计算标准差的更快和等效定义:
sigma = SquareRoot(ExpectedValue(|X - mean|^2)) # slow
sigma = SquareRoot(ExpectedValue(X^2) - ExpectedValue(X)^2) # fast
- For more info see the math
此函数作出以下假设:
- 如果列i中没有任何观测值,则将mean_array[i]设置为0.0,将std_array[i]设置为1.0。
- 如果我们只有一个观测值,或者一列的标准差为0.0,我们只减去该列的平均值
(用于规范化测试集:)此函数允许基于预先指定的平均值和标准偏差数组进行规范化
该函数还只允许对给定的特征子集进行规范化。
示例
>>> import numpy as np
>>> from scipy.sparse import csr_matrix
>>> x = csr_matrix(np.array([[1, 0, 0], [3, 0, 4], [2, 5, 2]], dtype=float))
>>> print(x.toarray())
[[ 1. 0. 0.]
[ 3. 0. 4.]
[ 2. 5. 2.]]
>>> xnorm, xmean, xstd, xixnormed = csr_utils.normalize_csr_matrix(x)
>>> print(xnorm.todense())
[[-1.22474487 0. 0. ]
[ 1.22474487 0. 1. ]
[ 0. 0. -1. ]]
>>> xmean
array([2., 5., 3.])
>>> xstd
array([0.81649658, 1. , 1. ])
>>> xixnormed
array([0, 2])