美文网首页统计学我爱编程机器学习
皮尔森相关系数(Pearson Correlation)

皮尔森相关系数(Pearson Correlation)

作者: 曦宝 | 来源:发表于2018-08-07 09:37 被阅读129次

    皮尔森相关系数是一种最简单的反应特征和响应之间关系的方法。

    这个方法衡量的是变量之间的线性相关性。

    结果的取值区间为[-1,1]。-1表示完全的负相关,+1表示完全的正相关,0表示没有线性相关。

    皮尔森相关系数有一个明显的缺陷就是,它只对线性关系敏感。如果关系是非线性的,哪怕两个变量之间是一一对应的关系,皮尔森相关系数也可能接近0.

    from pandas import read_csv
    import numpy as np
    from scipy.stats import pearsonr

    def PearsonrCorrelation():
    tps = read_csv('E:\workfile\data\trade\tps.csv', header=0)
    label = np.array(tps)[:, 0]
    feature = np.array(tps)[:, 1:]

    for i in range(0, len(feature[0])):
        print("第'%i'属性的皮尔森相关系数为" % (i+1), pearsonr(label, feature[:, i]))
    
    image.png

    这是我的代码和数据的运行结果。
    还是依照惯例,跟进去看一下源码和说明文字。


    image.png

    上面的说明信息,皮尔森相关系数描述的是线性关系。严格来说,需要数据集是正态分布的,但不必是零均值的。
    从代码里可以看出来,只能计算两组数据之间的皮尔森相关系数,不能批量计算。


    image.png
    image.png

    返回值的第一项是皮尔森相关系数,第二项是p_value值。一般来说皮尔森相关系数越大,p_value越小,线性相关性就越大。但是看到note里讲的。p_value不是完全的可靠,当数据量大于500的时候,可能是合理的。

    相关文章

      网友评论

      • SiriusWy:厉害啊
        1. 二维正态分布的概率密度函数里面有ρ,就是这个皮尔逊相关系数。也就是0, 1分布的特征不能用。
        2. 皮尔逊相关系数还受到异常值影响,当然是特殊情况。
        3. 那么两个特征是否真的线性相关?可以画个图。有没有更牛的算法来验证非线性情况呢?

      本文标题:皮尔森相关系数(Pearson Correlation)

      本文链接:https://www.haomeiwen.com/subject/mycovftx.html