资源简介
基于物品的协同过滤算法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
相关资源
- Python基础教程-第3版(文字版)电子书
- python cookbook 3th 英文版
- problem-solving-with-algorithms-and-data-struc
- PythonCard
- 《Python爬虫-开发与项目实战》源码
- bayes分类python
- python满分大作业 打地鼠
- Python物理建模初学者指南
- pyltp wheel python3.5 3.6
- Python自然语言处理(PDF高清书籍分享
- 基于Python自相关法时间序列的时间延
- 利用 Python 进行数据分析 中文第二版
- Problem Solving with Algorithms and DataStruct
- python计算机二级教程1-11章
- python自然语言处理中文版.pdf223593
- python的pywt库
- PTVS 2.2 VS 2013 补充工具 自动提示功能
- data-science-using-python-r
- Python for VS2012官方版
- A Byte of Python(简明Python教程)(第
- wxPython 2.8 Application Development Cookbook
- 终极自动化测试环境搭建:Selenium+E
- 基于django搭建的博客
- SHA-3 哈希摘要算法 python 源代码及官方
- sha3 python 史上最全最详细的正确实现
- Hands On Machine Learning with Python: Concept
- Python for everybody (EDX)
- Python数据分析与机器学习-贝叶斯实现
-
PyGob
ject(pygtk3)全解——超多代码 - matlab转python的教程
评论
共有 条评论