资源简介
Python源码,基于物品的协同过滤算法源码及数据集,可运行
![](http://www.nz998.com/pic/53964.jpg)
代码片段和文件信息
# -*- 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+ 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的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
- 量化交易(附python常见函数的使用方
评论
共有 条评论