资源简介
基于物品的协同过滤算法itemCF原理及python代码实现

代码片段和文件信息
# -*- coding=utf-8 -*-
import math
import sys
from texttable import Texttable
from collections import defaultdict
#from Wtemp import *
from operator import itemgetter
#读取文件
def readFile(fileData):
data=[]
rates=[]
f=open(fileData“r“)
data=f.readlines()
f.close()
for line in data:
dataLine=line.split(“\t“)
rates.append([int(dataLine[0])int(dataLine[1])int(dataLine[2])])
return rates
#创建字典,生成用户评分的数据结构
# 输入:数据集合,格式:用户id\t硬盘id\t用户评分
# 输出:1.用户字典:dic[用户id]=[(电影id电影评分)...]
# 2.电影字典:dic[电影id]=[用户id1用户id2...]
def createDict(rates):
user_dict={}
movie_dict={}
for i in rates:
if i[0] in user_dict:
user_dict[i[0]].append((i[1]i[2]))
else:
user_dict[i[0]]=[(i[1]i[2])]
if i[1] in movie_dict:
movie_dict[i[1]].append(i[0])
else:
movie_dict[i[1]]=[i[0]]
return user_dictmovie_dict
#建立物品倒排表计算物品相似度
def itemCF(user_dict):
N=dict()
C=defaultdict(defaultdict)
W=defaultdict(defaultdict)
for key in user_dict:
for i in user_dict[key]:
if i[0] not in N.keys(): #i[0]表示movie_id
N[i[0]]=0
N[i[0]]+=1 #N[i[0]]表示评论过某电影的用户数
for j in user_dict[key]:
if i==j:
continue
if j not in C[i[0]].keys():
C[i[0]][j[0]]=0
C[i[0]][j[0]]+=1 #C[i[0]][j[0]]表示电影两两之间的相似度,eg:同时评论过电影1和电影2的用户数
for irelated_item in C.items():
for jcij in related_item.items():
W[i][j]=cij/math.sqrt(N[i]*N[j])
return W
#结合用户喜好对物品排序
def recommondation(user_iduser_dictK):
rank=defaultdict(int)
l=list()
W=itemCF(user_dict)
for iscore in user_dict[user_id]: #i为特定用户的电影id,score为其相应评分
for jwj in sorted(W[i].items()key=itemgetter(1)reverse=True)[0:K]: #sorted()的返回值为listlist的元素为元组
if j in user_dict[user_id]:
continue
rank[j]+=score*wj #先找出用户评论过的电影集合,对每一部电影id,假设其中一部电影id1找出与该电影最相似的K部电影,计算出在id1下用户对每部电影的兴趣度,接着迭代整个用户评论过的电影集合,求加权和,再排序,可推荐出前n部电影,我这里取10部。
l=sorted(rank.items()key=itemgetter(1)reverse=True)[0:10]
return l
#获取电影列表
def getMovieList(item):
items={}
f=open(item“r“)
movie_content=f.readlines()
f.close()
for movie in movie_content:
movieLine=movie.split(“|“)
items[int(movieLine[0])]=movieLine[1:]
return items
#主程序
if __name__==‘__main__‘:
itemTemp=getMovieList(“E:/SHI/learning/python/ml-100k/u.item“) #获取电影列表
fileTemp=readFile(“E:/SHI/learning/python/ml-100k/u.data“) #读取文件
user_dicmovie_dic=createDict(fileTemp) #创建字典
user_id=66
movieTemp=recommondation(user_iduser_dic80) #对电影排序
rows=[]
table=Texttable()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-09-11 10:47 基于物品的协同过滤算法itemCF原理及python代码实现\
文件 4018 2017-02-21 13:37 基于物品的协同过滤算法itemCF原理及python代码实现\itemCFbyMyself.py
目录 0 2018-09-11 10:47 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\
文件 716 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\allbut.pl
文件 643 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\mku.sh
文件 6750 2016-01-30 04:26 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\README
文件 1979173 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.data
文件 202 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.genre
文件 36 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.info
文件 236344 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.item
文件 193 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.occupation
文件 22628 2000-07-20 05:09 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u.user
文件 1586544 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u1.ba
文件 392629 2001-03-09 02:32 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u1.test
文件 1583948 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u2.ba
文件 395225 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u2.test
文件 1582546 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u3.ba
文件 396627 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u3.test
文件 1581878 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u4.ba
文件 397295 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u4.test
文件 1581776 2001-03-09 02:34 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u5.ba
文件 397397 2001-03-09 02:33 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\u5.test
文件 1792501 2001-03-09 02:34 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\ua.ba
文件 186672 2001-03-09 02:34 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\ua.test
文件 1792476 2001-03-09 02:34 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\ub.ba
文件 186697 2001-03-09 02:34 基于物品的协同过滤算法itemCF原理及python代码实现\ml-100k\ub.test
相关资源
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
评论
共有 条评论