所謂歐幾里德距離,通俗的來講就是兩個物體之間各個維度的差的平方和,然後再開方。這樣,我們可以通過兩個使用者對若干本書的評價分數,我們可以求得兩個使用者的相近程度。具體演算法思路是,先求得兩個使用者都評價的書籍,然後求同一本書的評分差的平方,並把各差的平方相加,其實可以同時完成,即在求共同評價的書籍的時候就可以求差的平方和。為了比較容易衡量,也是為了和其他評價標準相同,我們規定0代表兩使用者無共同愛好,1代表完全相同。實現詳見**
from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1;
if len(si)==0:
return 0
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in si])
#print 1/(1+sqrt(sum_of_squares))
return 1/(1+sqrt(sum_of_squares))
Python之協同過濾(尋找相近的使用者)
資料內容是人們對不同電影的評價 我們通過計算人與人之間評價電影的相關度來找到口味相同的人,根據口味相同的人來推薦可能喜歡的電影。資料如下 the water 2.5,snakes on a plane 3.5,just my luck 3.0,superman returns 3.5,you me ...
推薦系統 3 尋找資料集中的相似使用者
coding utf 8 尋找資料集中的相似使用者 import json import numpy as np 計算user1 和 user2的相關係數 defpearson score dataset,user1,user2 if user1 not in dataset raise typee...
LeeCode584 尋找使用者推薦人
給定表 customer 裡面儲存了所有客戶資訊和他們的推薦人。id name referee id 1 will null 2 jane null 3 alex 2 4 bill null 5 zack 1 6 mark 2 寫乙個查詢語句,返回乙個客戶列表,列表中客戶的推薦人的編號都 不是 2。...