Programming collective inteligence

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

相關文章
相關標籤/搜索