精华内容
下载资源
问答
  • 皮尔逊系数

    千次阅读 2019-09-23 22:41:47
    皮尔逊系数 测量列之间的线性关系,该系数在-1,1变化,0代表没有线性关系 要求:每列是正态分布的,在很大的程度上,可以忽略这个要求,因为数据集很大 import seaborn as sns import matplotlib.style as style #...

    皮尔逊系数
    测量列之间的线性关系,该系数在-1,1变化,0代表没有线性关系
    要求:每列是正态分布的,在很大的程度上,可以忽略这个要求,因为数据集很大

    import seaborn as sns
    import matplotlib.style as style
    #自动选择最相关的特征进行展示,不过我们关注的是特征与响应变量之间的相关性
    style.use('fivethirtyeight')
    sns.heatmap(df.corr())
    

    在这里插入图片描述

    #用代码隔离特征与响应变量之间的相关性
    df.corr()['target']
    

    在这里插入图片描述

    #只留下相关系数超过正负0.7的特征
    df.corr()['target'].abs()>0.7
    

    在这里插入图片描述

    #存储特征
    highly_correlated_features=df.columns[df.corr()['target'].abs()>0.7]
    highly_correlated_features
    #删掉响应变量
    highly_correlated_features=highly_correlated_features.drop('target')
    highly_correlated_features
    
    X_subsetted=df[highly_correlated_features]
    get_best_model_and_accuracy(d_tree,tree_params,X_subsetted,df['target'])
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • python计算皮尔逊系数

    2018-08-27 16:35:04
    先定义欧几里得距离函数;先定义皮尔逊系数函数,利用for循环把皮尔逊系数公式的各个组成部分算出来,计算皮尔逊系数,调用函数计算皮尔逊系数
  • 相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。  具体的,如果有两个变量:X、Y,最终计算出的相关系数的含义...
    相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
        具体的,如果有两个变量:X、Y,最终计算出的相关系数的含义可以有如下理解:
    1. 当相关系数为0时,X和Y两变量无关系。
    2. 当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。
    3. 当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。
       相关距离的定义是:

    OK,接下来,咱们来重点了解下皮尔逊相关系数。
        在统计学中,皮尔逊积矩相关系数(英语:Pearson product-moment correlation coefficient,又称作 PPMCC或PCCs, 用r表示)用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。

    通常情况下通过以下取值范围判断变量的相关强度:
    相关系数     0.8-1.0     极强相关
                     0.6-0.8     强相关
                     0.4-0.6     中等程度相关
                     0.2-0.4     弱相关
                     0.0-0.2     极弱相关或无相关

    在自然科学领域中,该系数广泛用于度量两个变量之间的相关程度。它是由卡尔·皮尔逊从弗朗西斯·高尔顿在19世纪80年代提出的一个相似却又稍有不同的想法演变而来的。这个相关系数也称作“皮尔森相关系数r”。
    (1)皮尔逊系数的定义
    两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:
    以上方程定义了总体相关系数, 一般表示成希腊字母ρ(rho)。基于样本对协方差和方差进行估计,可以得到样本标准差, 一般表示成r:
    一种等价表达式的是表示成标准分的均值。基于(Xi, Yi)的样本点,样本皮尔逊系数是

                   其中 及 ,分别是标准分、样本平均值和样本标准差。
    或许上面的讲解令你头脑混乱不堪,没关系,我换一种方式讲解,如下:

    假设有两个变量X、Y,那么两变量间的皮尔逊相关系数可通过以下公式计算:

    • 公式一:
    注:勿忘了上面说过,“皮尔逊相关系数定义为两个变量之间的协方差和标准差的商”,其中标准差的计算公式为:
    • 公式二:
    • 公式三:
    • 公式四:

    以上列出的四个公式等价,其中E是数学期望,cov表示协方差,N表示变量取值的个数。

    (2)皮尔逊相关系数的适用范围
    当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:
    1. 两个变量之间是线性关系,都是连续数据。
    2. 两个变量的总体是正态分布,或接近正态的单峰分布。
    3. 两个变量的观测值是成对的,每对观测值之间相互独立。
    (3)如何理解皮尔逊相关系数

    rubyist皮尔逊相关系数理解有两个角度

    其一, 按照高中数学水平来理解, 它很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数,Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差.(就是高考的标准分类似的处理)

    样本标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方,也就是说,方差开方即为标准差,样本标准差计算公式为:

    所以, 根据这个最朴素的理解,我们可以将公式依次精简为:

    其二, 按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦。下面是关于此皮尔逊系数的几何学的解释,先来看一幅图,如下所示:


    回归直线: y=gx(x) [红色] 和 x=gy(y) [蓝色]

    如上图,对于没有中心化的数据, 相关系数与两条可能的回归线y=gx(x) 和 x=gy(y) 夹角的余弦值一致。
    对于没有中心化的数据 (也就是说, 数据移动一个样本平均值以使其均值为0), 相关系数也可以被视作由两个随机变量 向量 夹角 的 余弦值(见下方)。
    举个例子,例如,有5个国家的国民生产总值分别为 10, 20, 30, 50 和 80 亿美元。 假设这5个国家 (顺序相同) 的贫困百分比分别为 11%, 12%, 13%, 15%, and 18% 。 令 x 和 y 分别为包含上述5个数据的向量: x = (1, 2, 3, 5, 8) 和 y = (0.11, 0.12, 0.13, 0.15, 0.18)。
    利用通常的方法计算两个向量之间的夹角  (参见 数量积), 未中心化 的相关系数是:


    我们发现以上的数据特意选定为完全相关: y = 0.10 + 0.01 x。 于是,皮尔逊相关系数应该等于1。将数据中心化 (通过E(x) = 3.8移动 x 和通过 E(y) = 0.138 移动 y ) 得到 x = (−2.8, −1.8, −0.8, 1.2, 4.2) 和 y = (−0.028, −0.018, −0.008, 0.012, 0.042), 从中

    (4)皮尔逊相关的约束条件

    从以上解释, 也可以理解皮尔逊相关的约束条件:

    • 1 两个变量间有线性关系
    • 2 变量是连续变量
    • 3 变量均符合正态分布,且二元分布也符合正态分布
    • 4 两变量独立

    在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间;另一个是独立样本检验系数,用来检验样本一致性。

         简单说来,各种“距离”的应用场景简单概括为,空间:欧氏距离,路径:曼哈顿距离,国际象棋国王:切比雪夫距离,以上三种的统一形式:闵可夫斯基距离,加权:标准化欧氏距离,排除量纲和依存:马氏距离,向量差距:夹角余弦,编码差别:汉明距离,集合近似度:杰卡德类似系数与距离,相关:相关系数与相关距离。CDA数据分析师官网

    K值的选择

        除了上述1.2节如何定义邻居的问题之外,还有一个选择多少个邻居,即K值定义为多大的问题。不要小看了这个K值选择问题,因为它对K近邻算法的结果会产生重大影响。如李航博士的一书「统计学习方法」上所说:

    1. 如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
    2. 如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。
    3. K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。
        在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的K值。
    展开全文
  • 协方差,皮尔逊系数以及斯皮尔曼系数的具体统计学或数学意义就不在此过多描述,主要是解释其R语言代码实现,将分别使用公式的方式计算以及直接调用现有function的方式,以下是具体操作。 (一)首先导入数据并绘制...
  • 使用Pearson相关系数的电影推荐人 ... 在确定相似用户使用皮尔逊相关系数的程度之后,程序会根据相似用户的喜好将电影推荐给当前用户。 该程序基于相似用户不喜欢的电影,对推荐当前用户要避免的电影进行相同的操作。
  • 私人记录-面试简历皮尔逊系数RFE递归特征消除介绍python实现 简历 记录面试简历需要复习的一些知识。 皮尔逊系数 介绍: 皮尔逊相关也称为积差相关(或者积矩相关)。我们假设有两个变量X,Y,那么两变量间的皮尔逊...

    1皮尔逊系数

    1.1介绍:

    皮尔逊相关也称为积差相关(或者积矩相关)。我们假设有两个变量X,Y,那么两变量间的皮尔逊相关系数计算如下:

    在这里插入图片描述

    其中E为数学期望,cov表示协方差,N表示变量取值的个数

    相关系数的绝对值越大,相关性越强,相关系数越接近于1或-1,相关系数越接近于0,相关度越弱。

    通向情况下通过一下取值范围判断变量的相关强度:
    相关系数绝对值: 0.8-1.0 极强相关
    0.6-0.8 强相关
    0.4-0.6 中等程度相关
    0.2-0.4 弱相关
    0.0-0.2 极弱相关或无相关

    1.2试用范围:

    当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

    (1)、两个变量之间是线性关系,都是连续数据。
    (2)、两个变量的总体是正态分布,或接近正态的单峰分布。
    (3)、两个变量的观测值是成对的,每对观测值之间相互独立。

    3.matlab实现
    皮尔逊相关系数的Matlab实现(依据公式四实现):

    function coeff = myPearson(X , Y)
    % 本函数实现了皮尔逊相关系数的计算操作
    %
    % 输入:
    % X:输入的数值序列
    % Y:输入的数值序列
    %
    % 输出:
    % coeff:两个输入数值序列X,Y的相关系数
    %

    if length(X) ~= length(Y)
    error(‘两个数值数列的维数不相等’);
    return;
    end

    fenzi = sum(X .* Y) - (sum(X) * sum(Y)) / length(X);
    fenmu = sqrt((sum(X .^2) - sum(X)^2 / length(X)) * (sum(Y .^2) - sum(Y)^2 / length(X)));
    coeff = fenzi / fenmu;

    end %函数myPearson结束

    2.RFE递归特征消除

    2.1介绍

    递归特征消除的主要思想是反复构建模型,然后选出最好的(或者最差的)特征(根据系数来选),把选出来的特征放到一边,然后在剩余的特征上重复这个过程,直到遍历了所有的特征。在这个过程中被消除的次序就是特征的排序。

    RFE的稳定性很大程度上取决于迭代时,底层用的哪种模型。比如RFE采用的是普通的回归(LR),没有经过正则化的回归是不稳定的,那么RFE就是不稳定的。假如采用的是Lasso/Ridge,正则化的回归是稳定的,那么RFE就是稳定的。

    2.2 python实现

    """
    使用RFE进行特征选择:RFE是常见的特征选择方法,也叫递归特征消除。它的工作原理是递归删除特征,
    并在剩余的特征上构建模型。它使用模型准确率来判断哪些特征(或特征组合)对预测结果贡献较大。
    """
    
    from sklearn import datasets
    from sklearn.feature_selection import RFE
    from sklearn.linear_model import LogisticRegression
    
    testdataset = datasets.load_iris()
    x = testdataset.data
    y = testdataset.target
    
    model = LogisticRegression()
    rfe = RFE(model, 2)##rfe(estimator,n_features_to_select,step) estimator参数指明基模型,n_features_to_select指定最终要保留的特征数量,step为整数时设置每次要删除的特征数量,当小于1时,每次去除权重最小的特征。
    rfe = rfe.fit(x, y)
    print(rfe.support_)
    print(rfe.ranking_)
    
    展开全文
  • 协方差,皮尔逊系数以及斯皮尔曼系数的具体统计学或数学意义就不在此过多描述,主要是解释其R语言代码实现,将分别使用公式的方式计算以及直接调用现有function的方式,以下是具体操作。 (一)首先导入数据并绘制...
    前言:R语言是实践统计学和机器学习的良好工具,个人觉得相比Python比较容易学习。协方差,皮尔逊系数以及斯皮尔曼系数的具体统计学或数学意义就不在此过多描述,主要是解释其R语言代码实现,将分别使用公式的方式计算以及直接调用现有function的方式,以下是具体操作。
    (一)首先导入数据并绘制图像,数据是介个样子:
    A	B		C	D		E		Y
    234	0.04	48	0.1		0.45	16
    225	0.12	42	6		0.85	17
    216	0.12	10	10		0.9		19
    204	0.31	28	13		1.28	25
    189	0.37	55	13.6	1.32	32
    183	0.38	80	13.7	2.25	35
    173	0.55	50	14		2.25	39
    170	0.55	31	14.3	3.63	44
    164	0.8		69	15		4.6		50
    168	0.69	72	14.6	5.7		46
    175	0.49	57	13.9	6.48	38
    178	0.43	53	13.8	6.64	37
    196	0.32	42	13.4	7.5		29
    204	0.19	82	12		8.3		23
    208	0.18	39	11		8.9		20
    
    然后绘制数据,read.delim是导入数据的方式,然后par(mfrow(2,3))是为了图像显示时按照一个2行3列的方式展示,然后通过plot分别绘制A~E列和Y列的图表,data[1]或者data[,1]或者data[,c(1)]即为第一列,也就是A列,而data[1,]或者data[c(1),]则是第一行,但使用data[1]这种方式plot的时候会报错,所以还是老实用data[,1]或者data[,c(1)]吧😂。
    ##导入数据
    data <- read.delim("~/Documents/CoursINFO4/Machine Learning/dataAnalysis/data1TP1.txt")
    a<-data[,1]
    b<-data[,2]
    c<-data[,3]
    d<-data[,4]
    e<-data[,5]
    y<-data[,6]
    ##(1)显示图像
    par(mfrow=c(2,3)) #设置23列的分割
    plot(a,y)
    plot(b,y)
    plot(c,y)
    plot(d,y)
    plot(e,y)
    
    绘制完之后的图像如下图所示:

    在这里插入图片描述

    (二)然后是通过协方差和标准差获得皮尔逊系数,其公式如下:

    在这里插入图片描述

    #(2.1)计算皮尔逊相关系数 
    ro1 <- cov(a,y)/(sd(a)*sd(y))
    ro2 <- cov(b,y)/(sd(b)*sd(y))
    ro3 <- cov(c,y)/(sd(c)*sd(y))
    ro4 <- cov(d,y)/(sd(d)*sd(y))
    ro5 <- cov(e,y)/(sd(e)*sd(y))
    
    可得到结果如图:

    在这里插入图片描述

    (三)调用函数进行验证:
    #(2.2)用现成的函数验证
    res1<-cor(a,y) 
    res2<-cor(b,y)
    res3<-cor(c,y)
    res4<-cor(d,y)
    res5<-cor(e,y)
    
    通过验证发现结果相等:

    在这里插入图片描述

    (五)接下来是斯皮尔曼相关系数,其公式如下:

    在这里插入图片描述

    这个R表示该元素在这一列中的排名,即Rank,R语言中可直接使用Rank函数。
    # 斯皮尔曼系数
    sro1<-1-6*sum((rank(a)-rank(y))^2)/(15^3-15)
    sro2<-1-6*sum((rank(b)-rank(y))^2)/(15^3-15)
    sro3<-1-6*sum((rank(c)-rank(y))^2)/(15^3-15)
    sro4<-1-6*sum((rank(d)-rank(y))^2)/(15^3-15)
    sro5<-1-6*sum((rank(e)-rank(y))^2)/(15^3-15)
    
    结果如下:

    在这里插入图片描述

    通过结果可以看出,对于第一个图,参数的负相关性较大,而第二组数据和第四组数据都是正相关性较大,3和5则是正相关性较小。和最开始画出来的图是相符的。
    以下是一张用来直观体现从 -1 到 +1 的相关性的图:

    在这里插入图片描述

    (六)同样也可以通过公式直接获得,代码如下,但唯一遇到的问题是这两种方式的结果会存在千分位级别左右的差距:
    ## 验证
    sp1<-cor(a,y,method="spearman")
    sp2<-cor(b,y,method="spearman")
    sp3<-cor(c,y,method="spearman")
    sp4<-cor(d,y,method="spearman")
    sp5<-cor(e,y,method="spearman")
    
    结果如下:

    在这里插入图片描述

    完整代码见https://github.com/FrenchOldDriver1995/DataAnalysis_TravailTP/blob/master/dataAnalysis1.R
    展开全文
  • 相关系数之皮尔逊系数

    千次阅读 2018-09-27 20:38:40
    相关系数 0.8-1.0 极强相关 0.6-0.8 强相关 0.4-0.6 中等程度相关 0.2-0.4 弱相关 0.0-0.2 极弱相关或无相关 3、python实现 import math #计算特征和类的平均值 def calcMean(x,y): sum_x = sum(x) ...
  • 目的:有N个行向量⎡⎣⎢⎢⎢e1,e2,....en⎤⎦⎥⎥⎥[e1,e2,....en]\begin{bmatrix} e_{1}, \\e_{2} ,\\....\\e_{n}\end{bmatrix} 需要计算两两之间的皮尔逊系数,最简单的办法就是两个for循环,分别计算就搞定了。...
  • 协方差与皮尔逊系数详解

    千次阅读 2016-03-30 21:31:03
    皮尔逊系数 两个变量之间的皮尔逊相关系数为两个变量之间的协方差与标准差的商: ρx,y=cov(X,Y)σxσy=E[(X−μx)(X−μy)]σxσy\rho_{x,y} = \frac{cov(X,Y)}{\sigma_x \sigma_y} = \frac{E[(X-\mu_x)(X-\mu_y)]}...
  • # 计算皮尔逊相关系数 den = sqrt((sumofx2 - float (sum1 ** 2 ) / n) * (sumofy2 - float (sum2 ** 2 ) / n)) print( "num" ,num) print( "den" ,den) return num / den X = [ 1 , 2 , 3 , 5 , 8 ] Y...
  • 首先特征选择在实际的...数据相关性判断:皮尔逊系数 当相关系数为0时,X和Y两变量无关系。  当X的值增大,Y也增大,正相关关系,相关系数在0.00与1.00之间  当X的值减小,Y也减小,正相关关系,相关系
  • 我假设我现在的数据样本有m个,我的特征是n...我们就发现了 相关系数计算公式分子不就是上面两个向量的向量积吗? 而下面就是二者的模场的积啊。。。。呐呐呐,这相关系数不就是他们两个向量的余弦值吗???   ...
  • 计算皮尔逊相关系数,用于度量两个变量之间的相关性,其值介于-1到1之间 21 corrc = corrc[0,1 ] 22 return (16 * ((1 - corrc) / (1 + corrc)) ** 1) # ** 表示乘方 23 24 startTimeStamp = ...
  • 协方差与皮尔逊系数 协方差(Covariance)用于衡量两个随机变量的联合变化程度。所以,计算协方差的时候,需要输入两个变量。而方差是协方差的一种特殊情况,即变量与自身的协方差。 cov(X,Y)=∑i=1n(xi−xˉ)(yi−y...
  • b):20 corrc = np.corrcoef(a,b) #计算皮尔逊相关系数,用于度量两个变量之间的相关性,其值介于-1到1之间 21 corrc = corrc[0,1]22 return (16 * ((1 - corrc) / (1 + corrc)) ** 1) #** 表示乘方 23 24 ...
  • val correlMatrix: Matrix = Statistics.corr(feature,"spearman")//这里选用斯皮尔曼相关系数,皮尔逊系数输入"pearson" println(correlMatrix) 【所有代码(基于上一个程序)】 加入的包: import...
  • 1 # -*- coding: utf-8 -*- ... 皮尔逊相关系数(corrcoef)运算速度远超DTW或FASTDTW,但DTW或FASTDTW应用范围更广,适用于等长或变长的比较。   转载于:https://www.cnblogs.com/yszd/p/10079660.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,126
精华内容 450
关键字:

皮尔逊系数