5、电影推荐系统

实验资源

u.user
u.item
u.data

实验环境

VMware Workstation
Ubuntu 16.04
Jupyter Notebook
Pyspark

实验内容

本实验使用其中三个文件,用户信息、影片信息、评分数据

用户信息 (u.user)

用户id年龄性别职业邮政编码

影片信息(u.item)

影片id影片名称发行日期链接other

评分数据(u.data)

用户id影片id评分值时间戳(UTC)

根据读入的三个文件,利用协同过滤算法,向用户推荐电影 。

实验步骤

1、读取u.user,生成DataFrame,并创建临时表

#读取用户数据
user_df=spark.read.text('/home/test/u.user') 
user_df.show(10)
#为用户数据添加 schema
from pyspark import Row
user_rdd=user_df.rdd.map(lambda x:x[0].split('|')).map(lambda x:Row(id=x[0],age=x[1],sex=x[2],job=x[3],code=x[4]))
user_rdd.take(5)
#创建用户 dataframe
user_df=spark.createDataFrame(user_rdd)
#注册临时表
user_df.registerTempTable("user")
spark.sql('select id,age,sex,job,code from user').show()

在这里插入图片描述

2、读取u.data,生成DataFrame,并创建临时表

#读取评分数据
rating_df=spark.read.text('/home/test/u.data') 
rating_df.show(5)
#为评分数据添加 schema
rating_rdd=rating_df.rdd.map(lambda x:x[0].split()).map(lambda x:Row(user_id=x[0],film_id=x[1],rating=x[2],time=x[3]))
rating_rdd.take(5)
#创建评分 dataframe 
rating_df=spark.createDataFrame(rating_rdd)
#注册评分临时表 
rating_df.registerTempTable('rating')
spark.sql("select user_id,film_id,rating,time from rating").show()

在这里插入图片描述

3、读取u.item,生成DataFrame,并创建临时表

#读取电影信息 
film_df=spark.read.text('/home/test/u.item') 
film_df.show(5)
#为电影数据添加 schema 
film_rdd=film_df.rdd.map(lambda x:x[0].split('|')).map(lambda x:Row(id=x[0],title=x[1],post_time=x[2],url=x[4])) 
film_rdd.take(5)
#创建电影 dataframe 
film_df=spark.createDataFrame(film_rdd)
#注册电影临时表 
film_df.registerTempTable('film') 
spark.sql('select * from film').show()

在这里插入图片描述

4、利用协同过滤算法进行电影推荐

#导入 Spark 机器学习包:协同过滤算法
from pyspark.mllib.recommendation import ALS
#ALS.trainImplicit中第一个参数RDD是固定格式(用户编号,电影编号,评分值)
rdd=rating_rdd.map(lambda x:(x[3],x[0],x[1]))
rdd.take(5)
#训练模型
model=ALS.train(rdd,10,10,0.01)
#使用模型进行推荐,参数为用户 id,推荐个数
user_film=model.recommendProducts(112,3)
print(user_film)

在这里插入图片描述

#显示推荐电影名称
for film in user_film:spark.sql("select id,title,post_time,url from film where id = "+str(film[1])).show()

在这里插入图片描述

#查看用户看过的电影
spark.sql("select a.user_id,b.title from rating a,film b where a.film_id=b.id and a.user_id=112").show()
#查看用户看过的电影
spark.sql("select a.user_id,b.title from rating a,film b where a.film_id=b.id and a.user_id=112").show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25232.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐系统-电影推荐系统

本文的代码-源于《推荐系统开发实战》 数据源:train.json, 含有用户看过的所有的电影,以及他对电影的评分 使用算法: 皮尔逊相关系数 公式: 皮尔逊相关系数的取值范围是[-1,1],1表示完全正相关,-1表示完…

电影推荐算法

模型训练 下载数据集,解压到项目目录下的./ml-1m文件夹下。数据集分用户数据users.dat、电影数据movies.dat和评分数据ratings.dat。 ** 数据集分析 ** user.dat:分别有用户ID、性别、年龄、职业ID和邮编等字段。 数据集网站地址为http://files.group…

chatgpt赋能python:用Python打造智能电影推荐系统

用Python打造智能电影推荐系统 在数字娱乐时代,我们有着大量的影片选择,然而如何快速地找到符合自己口味的电影成为了我们面对海量电影时的一大难题。幸运的是,Python的出现为我们带来了解决问题的方法。 什么是智能电影推荐系统&#xff1…

基于用户喜好以及电影类型的电影推荐算法

本文参考文献:https://www.researchgate.net/publication/257403928_A_movie_recommendation_algorithm_based_on_genre_correlations 代码:https://github.com/827983519/recommend_algorithm/blob/master/Genre.py 1.电影推荐 电影推荐是推荐算法应用…

chatgpt赋能python:用Python打造更智能的电影推荐系统,让你轻松找到心仪的影片

用Python打造更智能的电影推荐系统,让你轻松找到心仪的影片 电影是人们在生活中不可或缺的娱乐方式之一。而对于喜欢看电影的朋友来说,找到一部能够满足自己口味的影片,是一件非常重要的事情。为了让大家更加方便地找到合适自己的电影&#…

电影推荐系统

摘 要 随着社会的发展,人们生活水平的提高,欣赏电影逐渐成为人们闲暇时的主要娱乐方式之一。电影院也越来越多,除了一些大型连锁式电影院外,还有很多社区影院,小剧场等也日益增多。这类电影院中,传统的电影…

chatgpt赋能python:Python写一个自动登录脚本

Python写一个自动登录脚本 在现代互联网时代,大部分网站在使用时需要登录,为了提高人工操作的效率,很多人开始使用自动化工具来完成自动登录。Python语言作为一款流行的脚本编程语言,在自动化方面也有很好的表现,本文…

解决Docker进不去mysql的问题

使用场景: 在Linux系统中操作: Docker里安装MySQL库,进入并进行相关操作。 问题情况 先启动mysql容器: docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:latest这里直接拒绝…

使用Flask Web创建一个调用ChatGPT API的网页--简单示例(Windows环境下)

前提:你应该要有一个能正常使用chatGPT的openAI账号;即你已经成功注册了chatGPT,并能正常使用。 文章目录 一、主要组成部分二、示例代码2.1 工程结构:2.2 说明2.3 依赖环境2.4 app.py代码2.5 index.html代码 三、搭建环境步骤 一…

JAVA对接百度API提交普通收录/SEO

JAVA对接百度API提交普通收录/SEO 说明: 为了增加内容的曝光量,除了主动让百度爬虫爬取之外,还有普通收录的API提交,程序主动向百度搜索推送资源,缩短爬虫发现网站链接的时间。 官网地址:http://data.zz.…

Java 快递物流查询 api对接

Java 快递物流查询 api对接 2018年08月24日 09:44:41 我跟吴彦祖四六开 阅读数:73 标签: java 物流查询 更多 个人分类: Java 这里只是记录一下。第三方都会提供很详细的demo和技术文档,或者安排专业人员进行联调。 第三方物流…

eBay API文档

1.创建eBay接入API教程网址 https://developer.ebay.com/api-docs/static/creating-edp-account.html 前言:API参考:资源 该分析API检索呼叫限制和数据被用于RESTful API中及其关联的资源设置配额。对getRateLimits和getUserRateLimits进行的调用的响应…

Java对接外部API这个问题

java对接外部api 需求提出解决思路编码测试 总结 差不多有一个多月没有更新blog,也是出于工作原因以及最近搬家在看合适的窝点导致断更。今天有一个小学妹来问我可以将我其他项目的api接入到我现在的项目中吗?我回答“可以”!我今天就写一篇关…

Midjourney API 接口对接历程

Midjourney是一个基于Discord环境的画图工具,它提供API接口用于扩展功能。对于程序开发者来说,Midjourney只能在Discord环境下使用,这限制了它的使用范围。本文将介绍使用Midjourney的API接口进行开发发过程中遇到的一些问题。 内测地址&…

JAVA对接亚马逊SPAPI

亚马逊官方文档Amazon-Services-APIAmazon API Services for Selling Partners and Shippers.https://developer-docs.amazon.com/ 1注册AWS账号,填写个人信息,填写银行信息,手机验证(AWS网址) 2在AWS里面创建IAM用户…

深信服防火墙API对接

深信服防火墙千呼万唤的API终于在8.0.35版本实现了。具体的API文档可以登录防火墙的后台WEB界面上的右上角点开即可查看: 根本api文档,首先先新建一个api账号,“用户可以登录WebUI通过"系统->管理员账号"栏将默认的账户勾上WEBA…

使用Swagger作API接口对接

1、当前项目中存在的问题 在前后端分离的项目中,如手机端与接口端对接、WEB项目调用API,进行接口对接的方式一般是先创建WORD文档,然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中,如果稍有不注意…

API对接实战

目录 一 背景 二 了解B公司接口的基础约定 三 基础域名 四 请求及相应格式说明 五 确定要对接哪些API 六 根据API文档,编写一些基础工具类。 七 根据API文档,编写必要的DTO 八 针对每个API方法,进行对接 九 对接代码结构 十 一些对…

企业微信api对接

用的是wxJava,但是wxJava文档真滴不清楚,都是jar全局搜索url/看方法试的。 坑0: 通讯录不仅要开通api,还得开通是“可编辑”不然是“只读”(然后还可以设置人员自己编辑后推动事件服务器)挺不错的 坑一&a…

WebAPI接口对接

WebAPI接口对接: 提示:此片文章是总结接口对接经验其中包括模型的建立以及统一的调用 学习内容: 数据对象模型的建立如何规范定义模型统一的请求方法系统中model的命名 数据对象的建立 接口的数据传输对象包括Request对象和Response对象 …