可扩展处理csr矩阵的实用函数

csr-utils的Python项目详细描述


企业社会责任

企业社会责任矩阵的可扩展操作

Build Status

安装

对于一般用户,如果使用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])

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法使用JAXB配置Moxy   java如何让我的简单Swing telnet客户端正确显示字符?   java中从可运行线程调用主线程的多线程处理   java数据源。EBJ3会话bean中的getConnection()   使用java和正则表达式从xml文件提取值时出现问题   java定制Jersy胡须Mvc   在Java中,“限制并发”是什么意思?   java有没有更干净的方法可以在这里使用Optional,而不在三个地方返回“NA”?   java Tomcat启动,然后崩溃,除非我打电话   java理解客户机和服务器   java时间戳将在视图对象>实体转换期间丢失   如何在java中返回布尔值(基元)?   java使用spring mvc设置日志记录,希望仅对我的代码进行跟踪/调试   用Jackson解析嵌套对象