一、集合智慧的典型例子:python
維基百科:算法
谷歌:code
二、推薦算法ci
類似度的計算:歐式距離、皮爾森相關係數(Pearson correlation coefficient)element
歐式距離公式:distance=sqrt(pow(x1-x2,2)+pow(y1-y2,2)) 類似係數:correlation = 1/(1+distance)it
皮爾森相關係數:io
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 # Find the number of elements n=len(si) # if they are no ratings in common, return 0 if n==0: return 0 # Add up all the preferences sum1=sum([prefs[p1][it] for it in si]) sum2=sum([prefs[p2][it] for it in si]) # Sum up 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 up the products pSum=sum([prefs[p1][it]*prefs[p2][it] for it in si]) # Calculate 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
相似的類似度計算:Jaccard coefficient or Manhattan distanceclass