• 皮尔逊相关系数 皮尔逊相关性和每个vox相关性。
• 皮尔逊相关性Today we would be using a statistical concept i.e. Pearson's correlation to help us understand the relationships between the feature values (independent values) and the target value ...
皮尔逊相关性Today we would be using a statistical concept i.e. Pearson's correlation to help us understand the relationships between the feature values (independent values) and the target value (dependent value or the value to be predicted ) which will further help us in improving our model’s efficiency.
今天，我们将使用统计概念(即Pearson的相关性)来帮助我们理解特征值(独立值)与目标值(独立值或要预测的值)之间的关系，这将进一步帮助我们提高模型的效率。
Mathematically pearson's correlation is calculated as:
在数学上， 皮尔逊的相关性计算如下：

So now the question arises, what should be stored in the variable X and what should be stored in variable Y. We generally store the feature values in X and target value in the Y. The formula written above will tell us whether there exists any correlation between the selected feature value and the target value.
所以现在出现了一个问题，什么应该存储在变量X中，什么应该存储在变量Y中。我们通常将特征值存储在X中，将目标值存储在Y中。上面写的公式将告诉我们是否存在任何相关性在所选特征值和目标值之间。
Before we code there are few basic things that we should keep in mind about correlation:
在进行编码之前，关于关联我们应该牢记一些基本的知识：
The value of Correlation will always lie between 1 and -1 关联的值将始终在1到-1之间 Correlation=0, it means there is absolutely no relationship between the selected feature value and the target value. Correlation = 0 ，这意味着所选特征值和目标值之间绝对没有关系。 Correlation=1, it means that there is a perfect relationship between the selected feature value and the target value and this would mean that the selected feature is appropriate for our model to learn. Correlation = 1 ，表示所选特征值与目标值之间存在完美的关系，这意味着所选特征适合我们的模型学习。 Correlation=-1, it means that there exists a negative relationship between the selected feature value and the target value, generally, the use of the feature value having a negative value of low magnitude is discouraged for e.g. -0.1 0r -0.2. Correlation ＝ -1 ，意味着在所选择的特征值与目标值之间存在负的关系，通常，对于例如-0.1 0r -0.2，不鼓励使用具有低幅度的负值的特征值。 So, guys let us now write the code to implement that we have just learned:
所以，伙计们让我们现在编写代码以实现刚刚学习的代码：
"""
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 29 22:21:12 2018
@author: Raunak Goswami
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
"""

"""
here the directory of my code and the headbrain3.csv file
is same make sure both the files are stored in same folder
or directory
"""

#this will show the first five records of the whole data

w=data.iloc[:,0:1].values
y=data.iloc[:,1:2].values
#this will create a variable x which has the feature values i.e head size
x=data.iloc[:,2:3].values
#this will create a variable y which has the target value i.e brain weight
z=data.iloc[:,3:4].values

print(round(data['Gender'].corr(data['Brain Weight(grams)'])))
plt.scatter(w,z,c='red')
plt.title('scattered graph for coorelation between Gender and brainweight' )
plt.xlabel('age')
plt.ylabel('brain weight')
plt.show()

print(round(data['Age Range'].corr(data['Brain Weight(grams)'])))
plt.scatter(x,z,c='red')
plt.title('scattered graph for coorelation between age and brainweight' )
plt.xlabel('age range')
plt.ylabel('brain weight')
plt.show()

plt.scatter(x,z,c='red')
plt.title('scattered graph for coorelation between head size and brainweight' )
plt.ylabel('brain weight')
plt.show()

data.info()
k=data.corr()
print("The table for all possible values of pearson's coefficients is as follows")
print(k)


.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

After you run your code in Spyder tool provided by anaconda distribution just go to your variable explorer and search for the variable named as k and double-click to see the values in that variable and you’ll see something like this
在anaconda发行版提供的Spyder工具中运行代码之后，转到变量资源管理器并搜索名为k的变量，然后双击以查看该变量中的值，您将看到类似以下的内容
The table above shows the correlation values here 1 means perfect correlation,0 is for no correlation and -1 stands for negative correlation.
上表显示了相关值，此处1表示完全相关，0表示无相关，-1表示负相关。
Now let us understand these values using the graphs:
现在，让我们使用图形来了解这些值：
The reason for getting this abruptly looking graph is that there is no correlation between gender and brain weight, that is why we cannot use gender as a feature value in our prediction model.Let us try drawing graph for brain weight using another feature value, what about head size?
得到这张看起来很突然的图的原因是性别和大脑重量之间没有相关性，这就是为什么我们不能在预测模型中使用性别作为特征值的原因。让我们尝试使用另一个特征值绘制大脑重量的图关于头的大小？
As you can see in the table, there exists a perfect correlation between between brain weight and head size so as a result we a getting a definite graph this signifies that there exists a perfect linear relationship between brain weight and head size so we can use head size as one of the feature value in our model.
如您在表格中所见，大脑重量和头部大小之间存在完美的关联，因此，我们得到一个确定的图，这表明大脑重量和头部大小之间存在完美的线性关系，因此我们可以使用头部大小作为模型中的特征值之一。
That is all for this article if you have any queries just write in the comment section I would be happy to help you. Have a great day ahead, keep learning.

如果您有任何疑问，只需要在评论部分中编写，这就是本文的全部内容，我们很乐意为您提供帮助。 祝您有美好的一天，继续学习。
翻译自: https://www.includehelp.com/ml-ai/pearsons-correlation-and-its-implication-in-machine-learning.aspx皮尔逊相关性
展开全文
• 介绍： 在统计学中，皮尔逊相关系数( Pearson correlation coefficient），又称皮尔逊积矩相关系数（Pearson product-...皮尔逊相关性系数计算工具类，将该类复制到项目目录后，可根据业务需求，传递参数调用就行。
• 皮尔逊相关性是什么 皮尔逊是一种相关性度量方法，主要依靠计算得出的皮尔逊相关系数度量。 皮尔逊相关系数输出范围为-1到+1，0代表无相关性，负值为负相关，正值为正相关。 几何上来讲，皮尔逊相关系数是余弦相似度...
皮尔逊相关性是什么
皮尔逊是一种相关性度量方法，主要依靠计算得出的皮尔逊相关系数度量。
皮尔逊相关系数输出范围为-1到+1，0代表无相关性，负值为负相关，正值为正相关。
几何上来讲，皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进。
皮尔逊系数就是在使用cos计算两个向量（cos<a, b> = a • b / |a|•|b|）时进行中心化。
余弦相似度（余弦距离）
计算的是两个向量在空间中的夹角大小, 值域为[-1, 1]: 1代表夹角为0°, 完全重叠/完全相似; -1代表夹角为180°, 完全相反方向/毫不相似.
余弦相似度的问题是: 其计算严格要求"两个向量必须所有维度上都有数值", 比如:v1 = (1, 2, 4), v2=(3, -1, null), 那么这两个向量由于v2中第三个维度有null, 无法进行计算.然而, 实际我们做数据挖掘的过程中, 向量在某个维度的值常常是缺失的, 比如v2=(3, -1, null), v2数据采集或者保存中缺少一个维度的信息, 只有两个维度. 那么, 我们一个很朴素的想法就是, 我们在这个地方填充一个值, 不就满足了"两个向量必须所有维度上都有数值"的严格要求了吗? 填充值的时候, 我们一般这个向量已有数据的平均值, 所以v2填充后变成v2=(3, -1, 1), 接下来我们就可以计算cos<v1, v2>了.
中心化是什么
而皮尔逊相关系数的思路是, 我把这些null的维度都填上0, 然后让所有其他维度减去这个向量各维度的平均值, 这样的操作叫作中心化.
中心化的意思是说, 对每个向量, 我先计算所有元素的平均值avg, 然后向量中每个维度的值都减去这个avg, 得到的这个向量叫做被中心化的向量.
机器学习, 数据挖掘要计算向量余弦相似度的时候, 由于向量经常在某个维度上有数据的缺失, 预处理阶段都要对所有维度的数值进行中心化处理.
皮尔逊系数公式

观察以上皮尔逊系数的公式:
分子部分: 每个向量的每个数字要先减掉向量各个数字的平均值, 这就是在中心化.
分母部分: 两个根号式子就是在做取模运算, 里面的所有的 r 也要减掉平均值, 其实也就是在做中心化.
结论
皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进.
一些其它定义
欧氏距离
欧式距离，即欧几里得距离，是最常见的两点之间的距离表示法，它定义在欧几里得空间中，例如x = (x1,x2,…,xn)和y = (y1,y2,…,yn)的欧式距离可表示为：

协方差
协方差是一个反映两个随机变量相关程度的指标，如果一个变量跟随着另一个变量同时变大或者变小，那么这两个变量的协方差就是正值，反之相反。

虽然协方差能反映两个随机变量的相关程度（协方差大于0的时候表示两者正相关，小于0的时候表示两者负相关），但是协方差值的大小并不能很好地度量两个随机变量的关联程度，例如，现在二维空间中分布着一些数据，我们想知道数据点坐标X轴和Y轴的相关程度，如果X与Y的相关程度较小但是数据分布的比较离散，这样会导致求出的协方差值较大，用这个值来度量相关程度是不合理的。

Pearson相关系数是用协方差除以两个变量的标准差得到的。为了更好的度量两个随机变量的相关程度，引入了Pearson相关系数，其在协方差的基础上除以了两个随机变量的标准差，容易得出，pearson是一个介于-1和1之间的值，当两个变量的线性关系增强时，相关系数趋于1或-1；当一个变量增大，另一个变量也增大时，表明它们之间是正相关的，相关系数大于0；如果一个变量增大，另一个变量却减小，表明它们之间是负相关的，相关系数小于0；如果相关系数等于0，表明它们之间不存在线性相关关系
皮尔逊代码实现
#手动实现pearson

import math
import numpy as np

#获取两个向量平均值
def calcMean(x,y):
sum_x=0
sum_y=0

for i in x.flat:
sum_x+=i
for i in y.flat:
sum_y+=i

n=len(x)

x_mean = float(sum_x+0.0)/n
y_mean = float(sum_y+0.0)/n

return  x_mean,y_mean

#求两个向量的pearson系数
def calcPearson9(x,y):
x_mean,y_mean = calcMean(x,y)
n = len(x)
sumTop = 0.0
sumBottom = 0.0
x_pow = 0.0
y_pow = 0.0

for i in range(n):
sumTop +=(x[i]-x_mean)*(y[i]-y_mean)
for i in range(n):
x_pow += pow(x[i]-x_mean,2)
for i in range(n):
y_pow += pow(y[i]-y_mean,2)
sumBottom = math.sqrt(x_pow *y_pow)
p = sumTop / sumBottom
return p

if __name__ == '__main__':
x1 = np.random.random_integers(0, 10, (100, 1))
x2 = np.random.random_integers(0, 10, (100, 1))

p=calcPearson9(x1,x2)
print(p)

pearsonr(x,y)：
1）输入：x为特征，y为目标变量.
2）输出：r： 相关系数 [-1，1]之间，p-value: p值。
注： p值越小，表示相关系数越显著，一般p值在500个样本以上时有较高的可靠性。
import numpy as np
from scipy.stats import pearsonr

#设定向量长度
l=100
#生成闭区间[0,10]上离散均匀分布的整数值,(a,b)为a行b列
#生成三个向量
x1=np.random.random_integers(0,10,l)
x2=np.random.random_integers(0,10,l)

p12 = pearsonr(x1,x2)
print(p12)


余弦相似度代码实现
import  jieba
import  numpy as np
import re

def get_word(s1,s2):
#s1为句子1 s2为句子2 返回余弦相似度
#分词
cut1 = jieba.cut(s1)
cut2 = jieba.cut(s2)

#split可以把字符串转为列表
list_word1 = (','.join(cut1)).split(',')
list_word2 = (','.join(cut2)).split(',')

#set构造一个集合，且不重复，可以据此找出两句中重合的词汇
key_word = list(set(list_word1+list_word2))

#构造两个词频矩阵
word_vector1 = np.zeros(len(key_word))
word_vector2 = np.zeros(len(key_word))

#计算词频
for i in range(len(key_word)):
for j in range(len(list_word1)):
if key_word[i] == list_word1[j]:
word_vector1[i]+=1
for k in range(len(list_word2)):
if key_word[i] == list_word2[k]:
word_vector2[i]+=1
#输出分别的词频向量
return word_vector1,word_vector2

def cos(vec1,vec2):
#dot为矩阵乘法
#linalg.norm()为求范数
dist = float(np.dot(vec1,vec2)/(np.linalg.norm(vec1) * np.linalg.norm(vec2)))
return dist

if __name__ == '__main__':
s1 = "很高兴见到你"
s2 = '我也很高兴见到你'

vec1,vec2 = get_word(s1,s2)

dist = cos(vec1,vec2)
print(dist)



展开全文
• 皮尔逊相关性分析要求变量类型为连续数值型变量，在问卷研究中，数据一般被视为连续数值型变量。因此，皮尔逊相关性分析是量表分析中最常用的统计学方法 。 接下来我将用几个步骤，在IBM SPSS Statistics中演示
现在假设有一份问卷报告，里面调查了用户对于某一商品质量的满意程度、售后的满意程度、回购的意愿这三项，那么要你去分析出这三项数据的相关性。这三者相或不相关是一个定性问题，那我们如何用数学的数据分析的方法来解决呢。在IBM SPSS Statistics中我们可以使用皮尔逊检测法来做相关性分析。

皮尔逊相关性分析要求变量类型为连续数值型变量，在问卷研究中，数据一般被视为连续数值型变量。因此，皮尔逊相关性分析是量表分析中最常用的统计学方法 。 接下来我将用几个步骤，在IBM SPSS Statistics中演示如何进行皮尔逊相关性分析。

1、数据展示

如图所示，图中有15组调查结果，图中的数字1~5代表满意程度，数字越大代表满意程度越高。

图1：数据展示

2、菜单位置

首先点击菜单中的“分析”按钮，然后点击下级菜单的“相关”按钮，最后点击“双变量”按钮。

图2：菜单位置

3、编辑双变量相关性界面

如图所示，我们将满意程度、回购意愿、质量满意这三个变量加入到变量框中。

图3：选择分析变量

点击“选项”按钮，然后勾选下图界面中的平均值和标准差、叉积偏差和协方差。

图4：勾选分析项

如图所示，将置信区间设置为95%。

图5：编辑置信区间

4、结果展示

怎样看懂结果是最重要的，我们以图中标注出来的两个数据为例。如图所示其中显著性为0.01，根据皮尔逊检测的规定显著性小于0.05说明具有相关性，那么就代表满意程度和回购意愿具有相关性。再看相关性的数值是0.871，根据规定只要相关性大于0就是正相关，也就是随着满意程度的增加回购意愿也会增加。其他的数据也可以上述步骤逐一查看。

图6：结果展示

皮尔逊相关性分析在问卷调查中的运用十分广泛，我们在日常办公和论文撰写的时候经常会用到问卷调查。掌握好本文的内容，需要注意以下几点，首先需要选择合适的变量进行皮尔逊相关性分析，然后需要注意变量要为连续的数值型变量不能是字符串，最后要弄懂显著性值在什么范围内变量具有相关性。关于相关性分析IBM SPSS Statistics中文官网还有很多文章，大家可以自行去查看。

展开全文
• 计算numpy和其他科学计算语言中两个矩阵的列之间的皮尔逊相关性的有效方法。 有关初始讨论，请参见 。 numpy版本在。 时机 笔记本电脑：i7-5650U 2.2 GHz（双核），8GB 1600 MHz DDR3、512 GB PCIe SSD，Mac OS ...
• 通常，Pearson相关系数很容易出现异常值，因此Jackknifing可能会有所帮助。 我无法找到任何有用的实现方法来... “ leave-kojack”为Jackknife Pearson相关性提供了k的动态值的实现，即，离开k-out的Pearson相关性
• 在讲解皮尔逊相关性之前我们先讲解一下z分数   z分数（z-score）,也叫标准分数（standard score）是一个分数与平均数的差再除以标准差的过程。z分数可以回答这样一个问题："一个给定分数距离平均数多少个...

欢迎喜欢深入了解推荐系统和mahout的兄弟加入群     推荐系统之Mahout  135918911

在讲解皮尔逊相关性之前我们先讲解一下z分数

z分数（z-score）,也叫标准分数（standard score）是一个分数与平均数的差再除以标准差的过程。z分数可以回答这样一个问题："一个给定分数距离平均数多少个标准差?"在平均数之上的分数会得到一个正的标准分数，在平均数之下的分数会得到一个负的标准分数。　　z分数是一种可以看出某分数在分布中相对位置的方法。z分数能够真实的反应一个分数距离平均数的相对标准距离。如果我们把每一个分数都抓换成z分数，那么每一个z分数会以标准差为单位表示一个具体分数到平均数的距离或离差。将成正态分布的数据中的原始分数转换为z分数，我们就可以通过查阅z分数在正态曲线下面积的表格来得知平均数与z分数之间的面积，进而得知原始分数在数据集合中的百分等级。一个数列的各z分数的平方和等于该数列数据的个数，并且z分数的标准差和方差都为

总体z分数:z=（X-μ）/σ  其中X-μ为离均差,σ表示标准差

[1]
样本z分数:

理解皮尔逊相关的两个角度
其一, 按照高中数学水平来理解, 皮尔逊相关（Pearson Correlation Coefficient）很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数
Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差.(就是高考的标准分类似的处理)
标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方.
所以, 根据这个最朴素的理解,我们可以将公式依次精简为:

其二, 按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦. 台湾学者黄富廷在论文中进行了详细介绍.
皮尔逊相关的约束条件
从以上解释, 也可以理解皮尔逊相关的约束条件:
* 两个变量间有线性关系
* 变量是连续变量
* 变量均符合正态分布,且二元分布也符合正态分布
* 两变量独立
在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间;另一个是独立样本检验系数,用来检验样本一致性.
手算的例子
使用维基相关中的例子:

例如，假设五个国家的国民生产总值分别是1、2、3、5、8（单位10亿美元），又假设这五个国家的贫困比例分别是11%、12%、13%、15%、18%。

创建2个向量.(R语言)
x<-c(1,2,3,5,8)
y<-c(0.11,0.12,0.13,0.15,0.18)       

按照维基的例子,应计算出相关系数为1出来.我们看看如何一步一步计算出来的.
x的平均数是:3.8 y的平均数是0.138
所以,
sum((x-mean(x))*(y-mean(y)))=0.308        

用大白话来写就是:
(1-3.8)*(0.11-0.138)=0.0784
(2-3.8)*(0.12-0.138)=0.0324
(3-3.8)*(0.13-0.138)=0.0064
(5-3.8)*(0.15-0.138)=0.0144
(8-3.8)*(0.18-0.138)=0.1764

0.0784+0.0324+0.0064+0.0144+0.1764=0.308    

同理, 分号下面的,分别是:
sum((x-mean(x))^2)=30.8
sum((y-mean(y))^2)= 0.00308   

用大白话来写,分别是:
(1-3.8)^2=7.84  #平方
(2-3.8)^2=3.24  #平方
(3-3.8)^2=0.64  #平方
(5-3.8)^2=1.44  #平方
(8-3.8)^2=17.64 #平方
7.84+3.24+0.64+1.44+17.64=30.8 

同理,求得:
sum((y-mean(y))^2)= 0.00308             

然后再开平方根,分别是:
30.8^0.5=5.549775
0.00308^0.5=0.05549775  

用分子除以分母,就计算出最终结果:
0.308/(5.549775*0.05549775)=1  


展开全文
• 这将导致图形具有与传统ERP相同的时间分辨率，并且仅包含正峰值，代表与所有通道相关的EEG信号相关性的增加（与刺激一致）。 此新方法还可用于有选择地识别和突出显示未锁相的ERP响应的任何隐藏组件，这些组件通常...
• 皮尔逊相关系数2. 热力图(haetmap)注：Reference： 前言 特征选择是一个重要的“数据预处理”过程，在实现机器学习任务中，获得数据后通常先进行特征选择，此后再训练学习器。[1] 特征选择的两大主要原因： 维数...
• //最后的皮尔逊相关度系数 BigDecimal common_items_len = new BigDecimal(this.rating_map_list.size()); //操作数的个数 BigDecimal this_sum = new BigDecimal("0"); //第一个相关数的和 BigDecimal u_sum = ...
• Python 数据相关性分析speculatecat关注12018.04.25 15:07:39字数 1,659阅读 6,121概述 在我们的工作中，会有一个这样的场景，有若干数据罗列在我们的面前，这组数据相互之间可能会存在一些联系，可能是此增彼涨，...
• 数据标准化之后，（服从标准正太分布的话）夹角余弦，皮尔逊相关度是一样的 3、卡方检验 这个还不是太明白数学意义，这是怎么来的，为啥这么算？？？，而且没实际使用过。 具体介绍参考这篇博客 ...
• 前言 线性回归：在统计学中，线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间...皮尔逊相关系数：在统计学中，皮尔逊相关系数( Pearson correlation coefficient...
• 两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商： 上式定义了总体相关系数，常用希腊小写字母p 作为代表符号。估算样本的协方差和标准差，可得到皮尔逊相关系数，常用英文小写字母 r 代表...
• 由于平和县各镇的派件量不论是早前的数据还是近年的数据都无法查询得到（其行政层级过低），因此将借助于其他变量（类似于中间量的概念）与行政层级高的已知派件量的皮尔逊相关性分析，来对平和县各镇的派件量作预测...
• 一 、皮尔逊相关性 在统计学中，皮尔逊相关系数( Pearson correlation coefficient），又称皮尔逊积矩相关系数（Pearson product-moment correlation coefficient，简称PPMCC或PCCs），是用于度量两个变量X和Y之间...
• 1.皮尔逊相关系数 r的取值在-1与+1之间，若r>0，表明两个变量是正相关，即一个变量的值越大，另一个变量的值也会越大；若r<0，表明两个变量是负相关，即一个变量的值越大另一个变量的值反而会越小。r 的...
• 一、皮尔逊相关性和斯皮尔曼相关性 1.1 皮尔逊相关性 要理解 Pearson 相关系数，首先要理解协方差（Covariance）。协方差表示两个变量 X，Y 间相互关系的数字特征，其计算公式为： Pearson 相关系数...
• 皮尔逊相关性的推断 安装和使用 npm install fisher-transform 要求如下： var fisher = require('fisher-transform'); fisher导出以下函数： fisherTest(rho, n, [alpha, alternative, rho_0] ） 函数参数为： ...

...