surprise 是一个主流的python推荐系统框架,支持的最基本数据格式为movielens dataset,其评分数据格式为

user item rating timestamp

# -*- coding:utf-8 -*-
from __future__ import (absolute_import, division, print_function, unicode_literals)
import os
import io
from surprise import KNNBaseline
from surprise import Datasetimport logginglogging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S')# 训练推荐模型 步骤:1
def getSimModle():# 默认载入movielens数据集
    data = Dataset.load_builtin('ml-100k')trainset = data.build_full_trainset()#使用pearson_baseline方式计算相似度  False以item为基准计算相似度 本例为电影之间的相似度
    sim_options = {'name': 'pearson_baseline', 'user_based': False}##使用KNNBaseline算法
    algo = KNNBaseline(sim_options=sim_options)#训练模型
    algo.train(trainset)return algo# 获取id到name的互相映射  步骤:2
def read_item_names():"""
    获取电影名到电影id 和 电影id到电影名的映射
    """
    file_name = (os.path.expanduser('~') +'/.surprise_data/ml-100k/ml-100k/u.item')rid_to_name = {}name_to_rid = {}with io.open(file_name, 'r', encoding='ISO-8859-1') as f:for line in f:line = line.split('|')rid_to_name[line[0]] = line[1]name_to_rid[line[1]] = line[0]return rid_to_name, name_to_rid# 基于之前训练的模型 进行相关电影的推荐  步骤:3
def showSimilarMovies(algo, rid_to_name, name_to_rid):# 获得电影Toy Story (1995)的raw_id
    toy_story_raw_id = name_to_rid['Toy Story (1995)']logging.debug('raw_id=' + toy_story_raw_id)#把电影的raw_id转换为模型的内部id
    toy_story_inner_id = algo.trainset.to_inner_iid(toy_story_raw_id)logging.debug('inner_id=' + str(toy_story_inner_id))#通过模型获取推荐电影 这里设置的是10部
    toy_story_neighbors = algo.get_neighbors(toy_story_inner_id, 10)logging.debug('neighbors_ids=' + str(toy_story_neighbors))#模型内部id转换为实际电影id
    neighbors_raw_ids = [algo.trainset.to_raw_iid(inner_id) for inner_id in toy_story_neighbors]#通过电影id列表 或得电影推荐列表
    neighbors_movies = [rid_to_name[raw_id] for raw_id in neighbors_raw_ids]print('The 10 nearest neighbors of Toy Story are:')for movie in neighbors_movies:print(movie)if __name__ == '__main__':# 获取id到name的互相映射
    rid_to_name, name_to_rid = read_item_names()# 训练推荐模型
    algo = getSimModle()##显示相关电影
    showSimilarMovies(algo, rid_to_name, name_to_rid)

基于Python库surprise的电影推荐系统相关推荐

  1. 基于Python机器学习方法的电影推荐系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85745459 资源下载地址:https://download.csdn.net/downl ...

  2. 基于python和TensorFlow的电影推荐系统

    电影推荐系统 这门课感觉挺有意思,而且老师讲的也很好,便决定为代码添上注释自己做一下总结. 代码地址 课程地址 第一步:数据准备 打开网址 电影数据集 找到下图所示数据集进行下载解压. 第二步:数据准 ...

  3. 基于Python机器学习算法的电影推荐系统以及票房预测系统

    电影数据分析 目录 电影数据分析 1 一..实验概述 1 1.1 实验标 1 1.2 .实验完成情况 1 二..电影特征的可视化分析 2 电影票房预测 9 2.1 Data Augmentation ...

  4. 基于Python猫眼票房TOP100电影数据抓取

    基于Python猫眼票房TOP100电影数据抓取 使用requests库抓取数据 BeatifulSoup解析URL,将数据存入csv文件 处理数据,生成图表 本次爬取数据使用Python语言在jup ...

  5. java项目-第96期基于ssm+hadoop+spark的电影推荐系统-大数据毕业设计

    java项目-第96期基于ssm+hadoop+spark的电影推荐系统 [源码请到资源专栏下载] 1.项目简述 电影推荐系统,基于大数据分析的推荐系统,适合学习和企业应用. 首先电影推荐相对于其它推 ...

  6. 基于内容推荐算法的电影推荐系统

    基于内容的推荐算法 格局用户过去一段时间内喜欢的物品,以及由此推算出来用户偏好,为用户推荐相似物品.其中的"内容"指的便是:用户过去一段时间内喜欢的物品,以及由此推算出来的用户偏好 ...

  7. 【基于python协同过滤的新闻推荐系统-哔哩哔哩】 https://b23.tv/VkBJ8KZ

    [基于python协同过滤的新闻推荐系统-哔哩哔哩] https://b23.tv/VkBJ8KZ https://b23.tv/VkBJ8KZ

  8. [转载] Python基于机器学习方法实现的电影推荐系统

    参考链接: Python | 电影推荐系统的实现 推荐算法在互联网行业的应用非常广泛,今日头条.美团点评等都有个性化推荐,推荐算法抽象来讲,是一种对于内容满意度的拟合函数,涉及到用户特征和内容特征,作 ...

  9. 基于python+django的个性化电影推荐系统设计与实现

    目录 第 1 章 绪论 1 1.1 研究背景及意义 1 1.2 国内外研究现状 1 1.3 本文研究目标和研究内容 4 1.4 论文结构安排 4 第 2 章 推荐算法的研究 7 2.1 推荐算法简介 ...

最新文章

  1. 函数assert()详解
  2. 计算机专业核心技术,计算机系多媒体核心技术实验室建设专业方案(10页)-原创力文档...
  3. VS code 搭建Vue 项目
  4. 【先生】丘成桐:中国人可以做世界一流学者
  5. Sparkstreaming实时开发详解
  6. 三星s7250d下载php,HTML5表现令人满意_三星 S7250D(Wave M)_手机其它OS-中关村在线...
  7. ffmpeg推拉流优化方案
  8. Linux仿站工具,20 款优秀的 Linux 终端仿真器
  9. 佳博打印机ip地址修改软件_【动手实践】树莓派将有线打印机转为无线共享打印机 by xinlong...
  10. Insyde uefi 隐藏设置_使用u盘GPT+UEFI模式安装windows10系统步骤详细图解
  11. win10中Edge浏览器升级后崩溃 STATUS_INVALID_IMAGE_HASH
  12. 瑞萨单片机iap串口升级app工程的构建-学习记录
  13. 异构数据库结构与数据同步工具dbswitch
  14. Flutter 中的应用内购买
  15. 天猫四大独门利器,助力品牌引领消费趋势
  16. Ipv6上Ipv4的方法
  17. 聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)
  18. 记一次图片压缩内存溢出的问题
  19. 红旗 Linux 桌面操作系统 11 来了
  20. 用户'sa'登录失败(错误18456)解决方案图解----本人备注

热门文章

  1. android USB OTG功能实现
  2. emc re 整改 超标_EMC设计RE辐射超标整改策略和定位流程
  3. 父子组件传值之(子传父)
  4. 成语答题赚小程序安装教程
  5. 前端开发:Vue组件中的冒号用法
  6. 智能运维 | 我们不一样!告诉你百度云如何做智能流量异常检测
  7. 【计算机网络】知识点合集
  8. 中国尼龙搭扣市场趋势报告、技术动态创新及市场预测
  9. html 在线播放器,HTML5 Web播放器-Video.js
  10. appium连接mumu模拟器,无法连接问题