協(xié)方差:兩個變量總體誤差的期望。
創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、當涂網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為當涂等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。簡單的說就是度量Y和X之間關(guān)系的方向和強度。
X :預(yù)測變量
Y :響應(yīng)變量

Y和X的協(xié)方差:[來度量各個維度偏離其均值的程度]

備注:[之所以除以n-1而不是除以n,是因為這樣能使我們以較小的樣本集更好的逼近總體的協(xié)方差,即統(tǒng)計上所謂的“無偏估計”。而方差則僅僅是標準差的平方]
如果結(jié)果為正值,則說明兩者是正相關(guān)的(從協(xié)方差可以引出“相關(guān)系數(shù)”的定義),
如果結(jié)果為負值就說明負相關(guān)的
如果為0,也是就是統(tǒng)計上說的“相互獨立”
為什么呢:

如果第1,3象限點位多,最終的和就是正,X增大Y增大
如果第2,4象限點位多,最終的和就是負,X增大Y減小
Cov(Y,X)會受到度量單位的影響
引入相關(guān)系數(shù):


python使用以下公式進行計算[上面的公式不便于編程,需要多次掃描數(shù)據(jù),但是微小的錯誤會被放大哦]:

#coding:utf-8
'''
Y和X的相關(guān)系數(shù)就是標準化后變量的協(xié)方差
'''
'''
__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
'''
根據(jù)文件加載數(shù)據(jù)
'''
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的相關(guān)系數(shù),即為:皮爾遜相關(guān)系數(shù)
'''
def pearson(rating1, rating2):
'''
皮爾遜相關(guān)參數(shù)
在統(tǒng)計學(xué)中,皮爾遜積矩相關(guān)系數(shù)
(英語:Pearson product-moment correlation coefficient,
又稱作 PPMCC或PCCs[1],
文章中常用r或Pearson's r表示)
用于度量兩個變量X和Y之間的相關(guān)(線性相關(guān)),其值介于-1與1之間。
在自然科學(xué)領(lǐng)域中,該系數(shù)廣泛用于度量兩個變量之間的相關(guān)程度。
0.8-1.0 極強相關(guān)
0.6-0.8 強相關(guān)
0.4-0.6 中等程度相關(guān)
0.2-0.4 弱相關(guān)
0.0-0.2 極弱相關(guān)或無相關(guān)
'''
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是線性相關(guān)的
diabetes_x1_test=data['X1']
diabetes_y1_test=data['Y1']
plt.scatter(diabetes_x1_test, diabetes_y1_test, color='black')
print("黑色點的相關(guān)系數(shù)為:{}(皮爾遜相關(guān)參數(shù))".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是非線性 二次函數(shù)擬合
diabetes_x2_test=data['X2']
diabetes_y2_test=data['Y2']
plt.scatter(diabetes_x2_test, diabetes_y2_test, color='red')
print("紅色點的相關(guān)系數(shù)為:{}(皮爾遜相關(guān)參數(shù))".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 數(shù)據(jù)對中出現(xiàn)了 孤立點
diabetes_x3_test=data['X3']
diabetes_y3_test=data['Y3']
plt.scatter(diabetes_x3_test, diabetes_y3_test, color='blue')
print("藍色點的相關(guān)系數(shù)為:{}(皮爾遜相關(guān)參數(shù))".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("綠色點的相關(guān)系數(shù)為:{}(皮爾遜相關(guān)參數(shù))".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組數(shù)據(jù)去做線性回歸:
有圖可知都做出了,斜率和截距相等的擬合線性
4種X,Y的相關(guān)系數(shù)都很接近
在解釋相關(guān)系數(shù)之前,圖像點位的散點分布是很重要的
如果完全基于相關(guān)系數(shù)分析數(shù)據(jù),將無法發(fā)現(xiàn)數(shù)據(jù)構(gòu)造模式之間的差別
'''
參考數(shù)據(jù):