发布时间:2025-12-09 14:04:11 浏览次数:5
皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数。记为r,用来反映两个变量X和Y的线性相关程度,r值介于-1到1之间,绝对值越大表明相关性越强。
总体相关系数ρ定义为两个变量X、Y之间的协方差和两者标准差乘积的比值,如下:
估算样本的协方差和标准差,可得到样本相关系数(即样本皮尔森相关系数),常用r表示:
r还可以由(Xi,Yi)样本点的标准分数均值估计得到与上式等价的表达式:
其中为Xi样本的标准分数、样本均值和样本标准差,n为样本数量。
皮尔森相关系数反映了两个变量的线性相关性的强弱程度,r的绝对值越大说明相关性越强。
通过皮尔森系数定义:
皮尔森系数范围为[-1,1],因此皮尔森距离范围为[0,2]。
皮尔森(pearson)相关系数、斯皮尔曼(spearman)相关系数和肯德尔(kendall)相关系数并称为统计学三大相关系数。其中,spearman和kendall属于等级相关系数亦称为“秩相关系数”,是反映等级相关程度的统计分析指标。pearson是用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。
Pearson相关系数的计算方法有三种形式,如下:
皮尔森相关系数是衡量线性关联性的程度,p的一个几何解释是其代表两个变量的取值根据均值集中后构成的向量之间夹角的余弦。
python实现公式3的代码:
def pearson(vector1, vector2): n = len(vector1) #simple sums sum1 = sum(float(vector1[i]) for i in range(n)) sum2 = sum(float(vector2[i]) for i in range(n)) #sum up the squares sum1_pow = sum([pow(v, 2.0) for v in vector1]) sum2_pow = sum([pow(v, 2.0) for v in vector2]) #sum up the products p_sum = sum([vector1[i]*vector2[i] for i in range(n)]) #分子num,分母den num = p_sum - (sum1*sum2/n) den = math.sqrt((sum1_pow-pow(sum1, 2)/n)*(sum2_pow-pow(sum2, 2)/n)) if den == 0: return 0.0 return num/denpython实现公式1的代码:
# 计算特征和类的平均值def calcMean(x,y): sum_x = sum(x) sum_y = sum(y) 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 calcPearson(x,y): x_mean,y_mean = calcMean(x,y) # 计算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 += math.pow(x[i]-x_mean,2) for i in range(n): y_pow += math.pow(y[i]-y_mean,2) sumBottom = math.sqrt(x_pow*y_pow) p = sumTop/sumBottom return p# 计算每个特征的Pearson系数,返回数组 def calcAttribute(dataSet): prr = [] n,m = shape(dataSet) # 获取数据集行数和列数 x = [0] * n # 初始化特征x和类别y向量 y = [0] * n for i in range(n): # 得到类向量 y[i] = dataSet[i][m-1] for j in range(m-1): # 获取每个特征的向量,并计算Pearson系数,存入到列表中 for k in range(n): x[k] = dataSet[k][j] prr.append(calcSpearman(x,y)) return prr