可扩展处理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 HashMap线程安全性   java Android:从sqlite数据库检索数据   java OpeNni:颜色坐标到深度坐标   替换Java将所有逗号替换为分号,引号内的逗号除外   java如何获取数据库中的图像,并将其设置为特定行的表的“tooltipText()   java如何使用“没有休息吗?   java Spring引导与Gradle版本的Gradle问题   java无法更新oracle中的clob字段   用Java创建一个简单的银行账户   java openfire服务器是否实现了地雷功能?   java Android获取支持的区域设置列表   用sqlite安卓实现java简单数学计算   JavaAEMServlet获取请求头值   在java中生成随机16位数字   有类似dotnetkicks的东西吗。com for Java   xml@xmlanyement不会解组为特定的Java类型,而是在JAXBElement处停止   尝试反序列化对象时发生java错误   java如何将JSON对象从POSTMAN发送到Restful Web服务   com的java性能。太阳网httpserver。HttpServer和HttpURLConnection?