皮爾遜相關係數

2022-05-07 02:03:09 字數 1728 閱讀 3202

皮爾遜相關係數是比歐幾里德距離更加複雜的可以判斷人們興趣的相似度的一種方法。該相關係數是判斷兩組資料與某一直線擬合程式的一種試題。它在資料不是很規範的時候,會傾向於給出更好的結果。

公式一:

皮爾遜相關係數計算公式

公式二:

皮爾遜相關係數計算公式

公式三:

皮爾遜相關係數計算公式

公式四:

皮爾遜相關係數計算公式

以上列出的四個公式等價,其中e是數學期望,cov表示協方差,n表示變數取值的個數。

critics = ,  

'gene seymour': ,

'michael phillips': ,

'claudia puig': ,

'mick lasalle': ,

'jack matthews': ,

'toby': }

from math import sqrt

def sim_pearson(prefs, p1, p2):

# get the list of mutually rated items

si = {}

for item in prefs[p1]:

if item in prefs[p2]:

si[item] = 1

# if they are no ratings in common, return 0

if len(si) == 0:

return 0

# sum calculations

n = len(si)

# sums of all the preferences

sum1 = sum([prefs[p1][it] for it in si])

sum2 = sum([prefs[p2][it] for it in si])

# sums of the squares

sum1sq = sum([pow(prefs[p1][it], 2) for it in si])

sum2sq = sum([pow(prefs[p2][it], 2) for it in si])

# sum of the products

psum = sum([prefs[p1][it] * prefs[p2][it] for it in si])

# calculate r (pearson score)

num = psum - (sum1 * sum2 / n)

den = sqrt((sum1sq - pow(sum1, 2) / n) * (sum2sq - pow(sum2, 2) / n))

if den == 0:

return 0

r = num / den

return r

print(sim_pearson(critics,'lisa rose','gene seymour'))

0.396059017191

皮爾遜相關係數 如何理解皮爾遜相關係數和協方差

如果結果為正值,則說明兩者是正相關的,也就是說乙個人身高越高體重越重。如果結果為負值,就說明兩者是負相關。如果為0,則兩者之間沒有關係,身高和體重之間沒有關聯。雖然協方差能反映兩個隨機變數的相關程度 協方差大於0的時候表示兩者正相關,小於0的時候表示兩者負相關 但是協方差值的大小並不能很好地度量兩個...

皮爾遜相關係數與p值

假設有兩個變數x,y 則兩者之間的皮爾遜相關係數為 皮爾遜相關係數衡量的是兩者之間的相關關係,取值範圍為 1,1 取值為正表示正相關,取值為負表示是負相關,同時,皮爾遜相關係數衡量的是兩個變數之間的線性關係,如下圖,橫軸與縱軸變數有明顯的線性關係,由公式計算出來相關係數為 0.9836,高度相關性 ...

皮爾遜相關係數和檢驗P值

看兩者是否算相關要看兩方面 顯著水平以及相關係數 1 顯著水平,就是p值,這是首要的,因為如果不顯著,相關係數再高也沒用,可能只是因為偶然因素引起的,那麼多少才算顯著,一般p值小於0.05就是顯著了 如果小於0.01就更顯著 例如p值 0.001,就是很高的顯著水平了,只要顯著,就可以下結論說 拒絕...