协同过滤算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了协同过滤算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1602字,纯文字阅读大概需要3分钟。
内容图文
![协同过滤算法](/upload/InfoBanner/zyjiaocheng/640/a3d583e9566c41d3b232bd6ddba30312.jpg)
关于相似度的三种计算,可用于电影推荐系统。
from random import sample
import json
from math import sqrt
import time
from collections import defaultdict
#曼哈顿 欧式 cos 三种距离
users={"Angelica":{"星际穿越":3.5,“放牛班的春天”:2.0,
"肖申克的救赎":4.5,"盗梦空间":5.0,
"阿甘正传":1.5,"乱世佳人":2.5,
"傲慢与偏见":2.0},
"Bill":{"星际穿越":2.0,"放牛班的春天":3.5,
"肖申克的救赎":4.5,"盗梦空间": 5.0,
"阿甘正传":1.5,"乱世佳人": 2.5,
"傲慢与偏见": 2.0},
"Chan":{"星际穿越":2.0,"放牛班的春天":3.5,
"肖申克的救赎":3.5,"盗梦空间": 5.0,
"阿甘正传":2.5,"乱世佳人": 2.5,
"傲慢与偏见": 2.0}
}
def man_dis(usrl,usr2):
distance = 0
flag=False
for m in users[usrl]:
if m in users [usr2]:
distance += abs(users[usr1][m]-users[usr2][m])
#distance += (users[usr1][m]-users[usr2][m])**2
flag =True
if flag == True:
return distance
else :
return -1
def au1_dis(usrl,usr2):
distance = 0
flag=False
for m in users[usrl]:
if m in users [usr2]:
distance += (users[usr1][m]-users[usr2][m])**2
flag =True
if flag == True:
return sqrt(distance)
else :
return -1
def cos_dis(usrl,usr2):
ratingl=users[usr1]
rating2=users[usr2]
common_movies=[x for x in ratingl if x in rating2]
if len(common_movies)==0:
return -1
fenzi=sum([ratingl[x]*rating2[x] for x in common_movies])
len_1=sqrt(sum([rating1[x]**2 for x in common_movies]))
len_2=sqrt(sum([rating2[x]**2 for x in common_movies]))
if len_1 + len_2==0:
return -1
return fenzi/(len_1 * len_2)
def au2_dis(usrl,usr2):
ratingl=users[usr1]
rating2=users[usr2]
common_movies=[x for x in ratingl if x in rating2]
if len(common_movies)==0:
return -1
return sqrt(sum([(ratingl[x] - rating2[x])**2 for x in common_movies]))
内容总结
以上是互联网集市为您收集整理的协同过滤算法全部内容,希望文章能够帮你解决协同过滤算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。