皮爾遜相關係數 定義+python代碼實現 (與王印討論公式)

皮爾遜相關係數

定義

皮爾遜相關係數判斷兩組數據與某一直線擬合程度的一種度量
公式及其計算過程如下

詳細展開如下

這裏寫圖片描述
這裏寫圖片描述

這裏寫圖片描述

python代碼實現

'''
@copyright Programming Collective Intelligence
返回p1和p2的皮爾遜相關係數
prefs是一個二維矩陣字典,如下圖所示
(名字,電影)  movie1   movie2
       p1      4.5      5.0
       p2      3.0      1.5 
'''
def simPearson(prefs, p1, p2):
    #得到雙方都曾評價過得物品列表
    si={}
    for item in prefs[p1]:
        for item in prefs[p2]:
            si[item] = 1

    #得到列表元素的個數
    n = len(si)

    #如果兩者沒有共同之處,則返回1
    if n == 0: return 1

    #對所有偏好求和
    sum1 = sum([prefs[p1][it] for it in si])
    sum2 = sum([prefs[p2][it] for it in si])

    #求平方和
    sum1Sq = sum([pow(prefs[p1][it], 2) for it in si])
    sum2Sq = sum([pow(prefs[p2][it], 2) for it in si])

    #求乘積之和
    pSum = sum([prefs[p1][it] * prefs[p2][it] for it in si])

    #計算皮爾遜評價值
    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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章