• python numpy实现 标准差,方差


    使用numpy可以做很多事情,在这篇文章中简单介绍一下如何使用numpy进行方差/标准方差/样本标准方差/协方差的计算。

    variance: 方差

    方差(Variance)是概率论中最基础的概念之一,它是由统计学天才罗纳德·费雪1918年最早所提出。用于衡量数据离散程度,因为它能体现变量与其数学期望(均值)之间的偏离程度。具有相同均值的数据,而标准差可能不同,而通过标准差的大小则能更好地反映出数据的偏离度。

    计算:一组数据1,2,3,4,其方差应该是多少?

    计算如下:

    均值=(1+2+3+4)/4=2.5 
    方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/4 = (2.25+0.25+0.25+2.25)/4 = 1.25

    python的numpy库中使用var函数即可求解,代码&执行如下:

    1
    2
    3
    4
    5
    6
    7
    8
    liumiaocn:tmp liumiao$ cat np-5.py
    #!/usr/local/bin/python
    import numpy as np
    arr = np.array([1,2,3,4])
    print("variance of [1,2,3,4]:", np.var(arr))
    liumiaocn:tmp liumiao$ python np-5.py
    ('variance of [1,2,3,4]:', 1.25)
    liumiaocn:tmp liumiao$

    standard deviation: 标准偏差

    标准偏差=方差的开放,所以:

    计算: 一组数据1,2,3,4,其标准偏差应该是多少?

    计算就很简单了,对其求出的方差1.25进行开方运算即可得到大约1.118

    可以使用numpy库中的std函数就可以非常简单的求解,代码&执行如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    liumiaocn:tmp liumiao$ cat np-6.py
    #!/usr/local/bin/python
    import numpy as np
    arr = np.array([1,2,3,4])
    print("variance of [1,2,3,4]:", np.var(arr))
    print("sqrt of variance [1,2,3,4]:",np.sqrt(np.var(arr)))
    print("standard deviation: np.std()", np.std(arr))
    liumiaocn:tmp liumiao$ python np-6.py
    ('variance of [1,2,3,4]:', 1.25)
    ('sqrt of variance [1,2,3,4]:', 1.118033988749895)
    ('standard deviation: np.std()', 1.118033988749895)
    liumiaocn:tmp liumiao$

    sample standard deviation: 样本标准偏差

    标准偏差是对总体样本进行求解,如果有取样,则需要使用样本标准偏差,它也是一个求开方的运算,但是对象不是方差,方差使用是各个数据与数学均值的差的求和的均值,简单来说除的对象是N,样本偏差则是N-1。

    计算: 一组数据1,2,3,4,其样本标准偏差应该是多少? 
    计算如下: 
    均值=(1+2+3+4)/4=2.5 
    样本标准偏差的方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/3 = (2.25+0.25+0.25+2.25)/4 = 5/3 
    所以对5/3开方运算所得到的就是样本标准偏差为:1.29

    同样适用numpy的std函数就可以做到这点,只需要将其一个Optional的参数设定为1即可,代码&执行如下:

    1
    2
    3
    4
    5
    6
    7
    8
    liumiaocn:tmp liumiao$ cat np-7.py
    #!/usr/local/bin/python
    import numpy as np
    arr = np.array([1,2,3,4])
    print("sample standard deviation: np.std()", np.std(arr, ddof=1))
    liumiaocn:tmp liumiao$ python np-7.py
    ('sample standard deviation: np.std()', 1.2909944487358056)
    liumiaocn:tmp liumiao$

    注意:matlab中的std实际指的是样本标准偏差,这点需要注意,如果你的代码从matlab上copy过来,请注意其实际的意义是标准偏差还是样本标准偏差


       生命不息
       希望不止
       将来的你
       一定会感谢现在拼命的自己
       fighting!!!
  • 相关阅读:
    Nginx 学习笔记(七)如何解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
    jQuery基础 (四)——使用jquery-cookie 实现点赞功能
    Travis CI实现持续部署
    三大云安全工具(CASB、CSPM、CWPP)的使用场景
    数据访问安全代理 CASB
    SDP(软件定义边界)让SDN更安全,你的对面可不能是一条狗!
    从BeyondCorp说起
    [Docker] Docker整体架构图
    当博弈论遇上机器学习:一文读懂相关理论
    用Rust重写Linux内核模块体验
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/12531544.html
Copyright © 2020-2023  润新知