概念:集体智慧(Collective Intelligence,CI),简称集智,它是一种共享的或群体的智能。在网络时代来临以前,集体智慧就一直活跃在生物学、社会学、计算机科学、大众行为学等领域。随着Web 2.0的崛起和社会性软件的普及,集体智慧这在社交网络服务、众包、分享、评论和推荐等领域也获得了普遍应用 ,典型案例包括:百度百科、猪八戒网、任务中国、Threadless、InnoCentive、digg、iStockphoto、Mechanical Turk等。愈来愈多的传统公司和组织也开始使用各类集体智慧平台或工具,借助外部智慧以解决复杂问题 。python
概念:对一大群人进行搜索,把其中兴趣相同的人概括到一块,算法会对这群概括的人进行其它数据的挖掘,并把他们组合起来制做一个推荐表格。算法
在数据少许时可使用python的一些内置数据对象进行处理,可是当大量的数据处理时,须要使用数据库。数据库
欧几里得距离编程
简介安全
公式网络
注意事项less
代码示例:机器学习
'''编程思路 得到二者共同评分项 def sim_distance(数据文档,'person1','person2') s={} for item in UL[p1]: if item in UL[p2]: si[item] = 1 return si 欧几里得距离算法 若是没有得到相同项,返回0 if len(si) == 0: return 0 sum_of_squares = sum([pow(UL[p1][item] -UL[p2][item] , 2) for item in si]) return 1/(1+math.sqrt(sum_of_squares)) ''' #!/user/bin/python # -*- coding: cp936 -*- from math import sqrt BJ={'小明':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':10}, '小红':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':10}, '小将':{'唐人街探案':9.2,'湄公河行动':6.8,'红海行动':6,}, 'jace':{'唐人街探案':6.0,'湄公河行动':4.7,'红海行动':8}, 'jack':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':6}, 'davi':{'唐人街探案':9.2,'湄公河行动':6.8,'红海行动':5,}, } #a=1/sqrt(1+pow(4.9-4.7,2)+pow(7.8-7.0,2)) def sim_distance(prefs,person1,person2): person1Items = prefs[person1] commonItemName = [itemName for itemName in person1Items if itemName in prefs[person2]] if len(commonItemName) == 0:return 0 distance = sqrt(sum([pow(prefs[person1][item]-prefs[person2][item],2) for item in commonItemName])) return 1/(1+distance) #输出结果 >>> import ojld_distance >>> reload(ojld_distance) <module 'ojld_distance' from 'E:/software/python2\ojld_distance.pyc'> >>> sim_distance(BJ,'小将','小红') 0.14373291978667996 #!/user/bin/python # -*- coding: cp936 -*- from math import sqrt BJ={'小明':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':10}, '小红':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':10}, '小将':{'唐人街探案':9.2,'湄公河行动':6.8,'红海行动':6,}, 'jace':{'唐人街探案':6.0,'湄公河行动':4.7,'红海行动':8}, 'jack':{'唐人街探案':4.9,'湄公河行动':7.8,'红海行动':6}, 'davi':{'唐人街探案':9.2,'湄公河行动':6.8,'红海行动':5,}, } #a=1/sqrt(1+pow(4.9-4.7,2)+pow(7.8-7.0,2)) def distance(p,person1,person2): s1={} for item in p[person1]: if item in p[person2]: s1[item]=1 if len(s1)==0: return 0 sum_distance=sum([pow(p[person1][item]-p[person2][item],2) for item in p[person1] if item in p[person2]]) return 1/(1+sum_distance) >>> import sum_distance1 >>> distance(BJ,'小明','小明') 1.0
皮尔逊相关度工具
简介性能
相关公式
代码示例
#!/user/bin/python # -*- coding: cp936 -*- critics = { 'Lisa':{'Lady':2.5,'Snak':3.5,'Just':3.0,'Superman':3.5,'Dupree':2.5,'Night':3.0}, 'Gene':{'Lady':3.0,'Snak':3.5,'Just':1.5,'Superman':5.0,'Dupree':3.5,'Night':3.0}, 'Michael':{'Lady':2.5,'Snak':3.0,'Superman':3.5,'Night':4.0}, 'Claudia':{'Snak':3.5,'Just':3.0,'Superman':4.0,'Dupree':2.5,'Night':4.5}, 'Mick':{'Lady':3.0,'Snak':4.0,'Just':2.0,'Superman':3.0,'Dupree':2.0,'Night':3.0}, 'Jack':{'Lady':3.0,'Snak':4.0,'Just':3.0,'Superman':5.0,'Dupree':3.5,'Night':3.0}, 'Toby':{'Snak':4.5,'Superman':4.0,'Dupree':1.0} } from math import sqrt def sim_pearson(prefs,p1,p2): si = {} for item in prefs[p1]: if item in prefs[p2]: si[item] = 1 n = len(si) 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 print (sim_pearson(critics,'Lisa','Gene')) #输出结果 0.396059017191