简单线性回归-创新互联
协方差:两个变量总体误差的期望。
创新互联建站专注于企业营销型网站、网站重做改版、当涂网站定制设计、自适应品牌网站建设、H5场景定制、商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为当涂等各大城市提供网站开发制作服务。简单的说就是度量Y和X之间关系的方向和强度。
X :预测变量
Y :响应变量

Y和X的协方差:[来度量各个维度偏离其均值的程度]

备注:[之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的协方差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方]
如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),
如果结果为负值就说明负相关的
如果为0,也是就是统计上说的“相互独立”
为什么呢:

如果第1,3象限点位多,最终的和就是正,X增大Y增大
如果第2,4象限点位多,最终的和就是负,X增大Y减小
Cov(Y,X)会受到度量单位的影响
引入相关系数:


python使用以下公式进行计算[上面的公式不便于编程,需要多次扫描数据,但是微小的错误会被放大哦]:

#coding:utf-8
'''
Y和X的相关系数就是标准化后变量的协方差
'''
'''
__author__ = 'similarface'
QQ:841196883@qq.com
'''
from math import sqrt
from pandas import *
import pandas as pd
import os,sys
import matplotlib.pyplot as plt
#安装不了 就github下载源码安装
from sklearn import datasets, linear_model
'''
根据文件加载数据
'''
def loaddataInTab(filename):
if os.path.isfile(filename):
try:
return pd.read_table(filename)
except Exception,e:
print(e.message)
else:
print("文件存在!")
return None
'''
获取Y,X的相关系数,即为:皮尔逊相关系数
'''
def pearson(rating1, rating2):
'''
皮尔逊相关参数
在统计学中,皮尔逊积矩相关系数
(英语:Pearson product-moment correlation coefficient,
又称作 PPMCC或PCCs[1],
文章中常用r或Pearson's 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 极弱相关或无相关
'''
sum_xy, sum_x, sum_y, sum_x2, sum_y2, n = 0, 0, 0, 0, 0, 0
for i in xrange(len(rating1)):
n = n + 1
x = rating1[i]
y = rating2[i]
sum_xy += x * y
sum_x += x
sum_y += y
sum_x2 += x ** 2
sum_y2 += y ** 2
if n == 0:
return 0
fenmu = sqrt(sum_x2 - (sum_x ** 2) / n) * sqrt(sum_y2 - (sum_y ** 2) / n)
if fenmu == 0:
return 0
else:
return (sum_xy - (sum_x * sum_y) / n) / fenmu
data=loaddataInTab('./AnscombeQuartet')
#x1,y1是线性相关的
diabetes_x1_test=data['X1']
diabetes_y1_test=data['Y1']
plt.scatter(diabetes_x1_test, diabetes_y1_test, color='black')
print("黑色点的相关系数为:{}(皮尔逊相关参数)".format(pearson(diabetes_x1_test,diabetes_y1_test)))
regr1 = linear_model.LinearRegression()
diabetes_x1_train=diabetes_x1_test.as_matrix()[:, np.newaxis]
diabetes_y1_train=diabetes_y1_test.as_matrix()[:, np.newaxis]
regr1.fit(diabetes_x1_train, diabetes_y1_train)
plt.plot(diabetes_x1_test.as_matrix()[:, np.newaxis], regr1.predict(diabetes_x1_test.as_matrix()[:, np.newaxis]), color='black',linewidth=6)
#x2,y2是非线性 二次函数拟合
diabetes_x2_test=data['X2']
diabetes_y2_test=data['Y2']
plt.scatter(diabetes_x2_test, diabetes_y2_test, color='red')
print("红色点的相关系数为:{}(皮尔逊相关参数)".format(pearson(diabetes_x2_test,diabetes_y2_test)))
regr2 = linear_model.LinearRegression()
diabetes_x2_train=diabetes_x2_test.as_matrix()[:, np.newaxis]
diabetes_y2_train=diabetes_y2_test.as_matrix()[:, np.newaxis]
regr2.fit(diabetes_x2_train, diabetes_y2_train)
plt.plot(diabetes_x2_test.as_matrix()[:, np.newaxis], regr2.predict(diabetes_x2_test.as_matrix()[:, np.newaxis]), color='red',linewidth=4)
#x3,y3 数据对中出现了 孤立点
diabetes_x3_test=data['X3']
diabetes_y3_test=data['Y3']
plt.scatter(diabetes_x3_test, diabetes_y3_test, color='blue')
print("蓝色点的相关系数为:{}(皮尔逊相关参数)".format(pearson(diabetes_x3_test,diabetes_y3_test)))
regr3 = linear_model.LinearRegression()
diabetes_x3_train=diabetes_x3_test.as_matrix()[:, np.newaxis]
diabetes_y3_train=diabetes_y3_test.as_matrix()[:, np.newaxis]
regr3.fit(diabetes_x3_train, diabetes_y3_train)
plt.plot(diabetes_x3_test.as_matrix()[:, np.newaxis], regr3.predict(diabetes_x3_test.as_matrix()[:, np.newaxis]), color='blue',linewidth=2)
#x4,y4不适合线性拟合 极端值确立了直线
diabetes_x4_test=data['X4']
diabetes_y4_test=data['Y4']
plt.scatter(diabetes_x4_test, diabetes_y4_test, color='green')
print("绿色点的相关系数为:{}(皮尔逊相关参数)".format(pearson(diabetes_x4_test,diabetes_y4_test)))
regr4 = linear_model.LinearRegression()
diabetes_x4_train=diabetes_x4_test.as_matrix()[:, np.newaxis]
diabetes_y4_train=diabetes_y4_test.as_matrix()[:, np.newaxis]
regr4.fit(diabetes_x4_train, diabetes_y4_train)
plt.plot(diabetes_x4_test.as_matrix()[:, np.newaxis], regr4.predict(diabetes_x4_test.as_matrix()[:, np.newaxis]), color='green',linewidth=1)
plt.xticks(())
plt.yticks(())
plt.show()
'''
把上面的4组数据去做线性回归:
有图可知都做出了,斜率和截距相等的拟合线性
4种X,Y的相关系数都很接近
在解释相关系数之前,图像点位的散点分布是很重要的
如果完全基于相关系数分析数据,将无法发现数据构造模式之间的差别
'''
参考数据:
| 1 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 本文题目:简单线性回归-创新互联 本文链接:http://www.jxjierui.cn/article/cccpog.html |


咨询
建站咨询
