机器学习-回归中的相关性(Correlation Coefficient)和R平方值算法
Posted YEN_csdn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习-回归中的相关性(Correlation Coefficient)和R平方值算法相关的知识,希望对你有一定的参考价值。
学习彭亮《深度学习基础介绍:机器学习》课程
皮尔逊相关系数 (Pearson Correlation Coefficient):
概念:衡量两个值线性相关强度的量
取值范围:
[-1, 1]: 正向相关: >0, 负向相关:<0, 无相关性:=0
计算公式:
相关
举例
计算:
R平方值
定义:决定系数,反应因变量的全部变异能通过回归关系被自变量解释的比例。
描述:如R平方为0.8,则表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量不变,则因变量的变异程度会减少80%
计算
简单线性回归:R^2 = r * r
多元线性回归:
R平方也有其局限性
R平方随着自变量的增加会变大,R平方和样本量是有关系的。因此,我们要到R平方进行修正。修正的方法:
代码
#coding=utf-8
# @Author: yangenneng
# @Time: 2018-01-19 14:49
# @Abstract:
import numpy as np
from astropy.units import Ybarn
import math
# 计算相关系数
def computeCorrelation(X,Y):
xBar = np.mean(X)
yBar = np.mean(Y)
SSR = 0
varX = 0 # 公式中分子部分
varY = 0 # 公式中分母部分
for i in range(0, len(X)):
diffXXBar = X[i]-xBar
diffYYBar = Y[i]-yBar
SSR += (diffXXBar * diffYYBar)
varX += diffXXBar**2
varY += diffYYBar**2
SST = math.sqrt(varX*varY)
return SSR/SST
# 假设有多个自变量的相关系数
def polyfit(x, y, degree):
# 定义字典
result=
# polyfit 自动计算回归方程:b0、b1...等系数 degree为x的几次方的线性回归方程
coeffs=np.polyfit(x,y,degree)
# 转为list存入字典
result['polynomial']=coeffs.tolist()
# poly1d 返回预测值
p=np.poly1d(coeffs)
# 给定一个x的预测值为多少
y_hat = p(x)
# 均值
ybar = np.sum(y)/len(y)
ssreg = np.sum((y_hat-ybar)**2)
sstot = np.sum((y-ybar)**2)
result['determination'] = ssreg/sstot
return result
testX = [1, 3, 8, 7, 9]
testY = [10, 12, 24, 21, 34]
print "相关系数r:",computeCorrelation(testX,testY)
print "简单线性回归r^2:",str(computeCorrelation(testX,testY)**2)
# 此处x为一维的,所以多元退化为一元,结果应该与一元一样
print "多元回归r^2:",polyfit(testX,testY,1)
以上是关于机器学习-回归中的相关性(Correlation Coefficient)和R平方值算法的主要内容,如果未能解决你的问题,请参考以下文章
R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数拟合回归模型使用两个回归模型的残差计算偏相关性系数
R语言偏相关或者部分相关性系数计算实战:通过拟合两个回归模型或者pysch包计算偏相关系数(Partial Correlation)通过方差分析获得偏相关系数的F统计量(偏F检验二型检验)