资源简介
Python源码,基于物品的协同过滤算法源码及数据集,可运行
代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Mon Jun 4 09:41:15 2018
@author: Administrator
“““
# -*-coding=utf-8 -*-
import math
from texttable import Texttable
import imp
#计算余弦距离
def getCosDist(user1 user2):
sum_x = 0.0
sum_y = 0.0
sum_xy = 0.0
for key1 in user1:
for key2 in user2:
if key1[0] == key2[0]:
sum_x += key1[1] * key1[1]
sum_y += key2[1] * key2[1]
sum_xy += key1[1] * key2[1]
if sum_xy == 0.0:
return 0
demo = math.sqrt(sum_x * sum_y)
return sum_xy / demo
#读取文件,读取以行为单位,每一行是列表里的一个元素
def readFile(filename):
contents = []
f = open(filename “r“encoding = “ISO-8859-1“)
contents = f.readlines()
f.close()
return contents
#数据格式化为二维数组
def getRatingInfo(ratings):
rates = []
for line in ratings:
rate = line.split(“\t“)
rates.append([int(rate[0]) int(rate[1]) int(rate[2])])
return rates
#生成用户评分数据结构
def getUserScoreDataStructure(rates):
#userDict[2]=[(15)(42)].... 表示用户2对电影1的评分是5,对电影4的评分是2
userDict = {}
itemUser = {}
for k in rates:
user_rank = (k[1] k[2])
if k[0] in userDict:
userDict[k[0]].append(user_rank)
else:
userDict[k[0]] = [user_rank]
if k[1] in itemUser:
itemUser[k[1]].append(k[0])
else:
itemUser[k[1]] = [k[0]]
return userDict itemUser
#计算与指定用户最相近的邻居
def getNearestNeighbor(userId userDict itemUser):
neighbors = []
for item in userDict[userId]:
for neighbor in itemUser[item[0]]:
if neighbor != userId and neighbor not in neighbors:
neighbors.append(neighbor)
neighbors_dist = []
for neighbor in neighbors:
dist = getCosDist(userDict[userId] userDict[neighbor])
neighbors_dist.append([dist neighbor])
neighbors_dist.sort(reverse = True)
return neighbors_dist
#使用UserFC进行推荐,输入:文件名用户ID邻居数量
def recommendByUserFC(filename userId k = 5):
#读取文件
contents = readFile(filename)
#文件格式数据转化为二维数组
rates = getRatingInfo(contents)
#格式化成字典数据
userDict itemUser = getUserScoreDataStructure(rates)
#找邻居
neighbors = getNearestNeighbor(userId userDict itemUser)[:5]
#建立推荐字典
recommand_dict = {}
for neighbor in neighbors:
neighbor_user_id = neighbor[1]
movies = userDict[neighbor_user_id]
for movie in movies:
if movie[0] not in recommand_dict:
recommand_dict[movie[0]] = neighbor[0]
else:
recommand_dict[movie[0]] += neighbor[0]
#建立推荐列表
recommand_list = []
for key in recomman
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-06 14:43 ubcf\
文件 716 2000-07-20 05:09 ubcf\allbut.pl
文件 643 2000-07-20 05:09 ubcf\mku.sh
文件 6750 2016-01-30 04:26 ubcf\README
文件 1979173 2000-07-20 05:09 ubcf\u.data
文件 202 2000-07-20 05:09 ubcf\u.genre
文件 36 2000-07-20 05:09 ubcf\u.info
文件 236344 2000-07-20 05:09 ubcf\u.item
文件 193 2000-07-20 05:09 ubcf\u.occupation
文件 22628 2000-07-20 05:09 ubcf\u.user
文件 1586544 2001-03-09 02:33 ubcf\u1.ba
文件 392629 2001-03-09 02:32 ubcf\u1.test
文件 1583948 2001-03-09 02:33 ubcf\u2.ba
文件 395225 2001-03-09 02:33 ubcf\u2.test
文件 1582546 2001-03-09 02:33 ubcf\u3.ba
文件 396627 2001-03-09 02:33 ubcf\u3.test
文件 1581878 2001-03-09 02:33 ubcf\u4.ba
文件 397295 2001-03-09 02:33 ubcf\u4.test
文件 1581776 2001-03-09 02:34 ubcf\u5.ba
文件 397397 2001-03-09 02:33 ubcf\u5.test
文件 1792501 2001-03-09 02:34 ubcf\ua.ba
文件 186672 2001-03-09 02:34 ubcf\ua.test
文件 1792476 2001-03-09 02:34 ubcf\ub.ba
文件 186697 2001-03-09 02:34 ubcf\ub.test
目录 0 2018-06-06 14:43 ubcf\ubcf\
文件 4669 2018-06-06 13:59 ubcf\ubcf.py
文件 716 2000-07-20 05:09 ubcf\ubcf\allbut.pl
文件 643 2000-07-20 05:09 ubcf\ubcf\mku.sh
文件 6750 2016-01-30 04:26 ubcf\ubcf\README
文件 1979173 2000-07-20 05:09 ubcf\ubcf\u.data
文件 202 2000-07-20 05:09 ubcf\ubcf\u.genre
............此处省略19个文件信息
相关资源
- 人工智能-python机器学习实战高清完整
- 流畅的python_PDF 中文 高清 无密码
- Python编程从入门到实践.rar
- FlaskWeb开发:基于Python的Web应用开发实
- 《Python金融序列量化应用编程指南》
- Python web接口开发与测试电子版.pdf
- Thoughtful Machine Learning with Python
- Python for Data Analysis 2nd Edition最终版
- 《Python基础教程第3版》带书签超清
- 《Selenium自动化测试:基于Python语言》
- Django Web开发指南(Python)
- Python for Data Analysis 2nd Edition.pdf
- Web接口开发与自动化测试-基于Python语
- FishC小甲鱼零基础学python全套课后习题
- 分析三国演义和红楼梦,进行中文分
- python接口自动化测试
- Flask Web开发:基于Python的Web应用开发
- python不使用框架实现卷积神经网络识
- Python基础教程(第三版).pdf
- 用Python写网络爬虫PDF-理查德 劳森Ri
- Python基础教程第3版-中文-完整文字版
- CNN卷积神经网络PYTHON
- matplotlib-2.0.0b2-cp34-cp34m-win32.whl
- 用Python写网络爬虫.pdf
- Python-网站图片爬虫已包含微博微信公
- Python-STGAN用于图像合成的空间变换生
- Python-WenshuSpiderScrapy框架爬取中国裁判
- Python-利用GAN进行图片填充
- Bioinformatics_Algorithms_-_Design_and_Imple
- python爬取安居客二手房网站数据(讲
评论
共有 条评论