一、集合智慧的典型例子: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