当前位置: 首页 > news >正文

【Tensorflow 2.12 电影推荐系统之排序模型】

Tensorflow 2.12 电影推荐系统之排序模型

  • 学习笔记
    • 导入相关模块
    • 准备数据
      • 加载数据
      • 数据预处理
      • 获取词汇表
    • 构建模型
      • 定义评分排序模型
      • 定义损失函数以及模型评估指标
      • 定义完整的评分排序模型
    • 训练和评估
      • 创建排序模型实例
      • 缓存数据
      • 训练
      • 评估
    • 预测
    • 导出和加载模型
  • 结尾

学习笔记

Tensorflow 2.12 智能电影推荐系统搭建学习笔记~

Tensorflow是谷歌开源的机器学习框架,可以帮助我们轻松地构建和部署机器学习模型。这里记录学习使用tensorflow-recommenders来构建一个电影推荐排序模型。
版本:python3.1.0、tensorflow2.12.0~

导入相关模块

# 导入os模块,主要提供系统相关的函数,如文件操作等,这里主要用于保存模型
import os
# pretty print,适合打印复杂的数据结构对象
import pprint
# 用于创建临时文件和目录
import tempfile
# 字典以及文本处理模块
from typing import Dict, Text
# 一个用于进行科学计算的Python库,它提供了高性能的多维数组对象(ndarray)以及用于处理这些数组的各种函数和工具
import numpy as np
# 导入TensorFlow
import tensorflow as tf
import tensorflow_recommenders as tfrs
# TensorFlow示例数据加载模块
import tensorflow_datasets as tfds

准备数据

加载数据

Movielens数据集是明尼苏达大学的GroupLens研究小组的经典数据集。它包含了一组用户对电影的评分,是推荐系统研究的重要数据集。

# 加载用户观看电影评分数据集(评分可以认为是显示反馈,通过评分可以知道用户对电影的喜爱程度,从而进行有效的推荐)
ratings = tfds.load("movielens/100k-ratings", split="train")

数据预处理

# 去掉没用到的特征,保留用户ID,观看的电影标题以及用户对该电影的评分
# 数据:{'bucketized_user_age': 45.0,'movie_genres': array([7], dtype=int64),'movie_id': b'357','movie_title': b"One Flew Over the Cuckoo's Nest (1975)",'raw_user_age': 46.0,'timestamp': 879024327,'user_gender': True,'user_id': b'138','user_occupation_label': 4,'user_occupation_text': b'doctor','user_rating': 4.0,'user_zip_code': b'53211'}
ratings = ratings.map(lambda x: {"movie_title": x["movie_title"],"user_id": x["user_id"],"user_rating": x["user_rating"]
})
# 设置随机数种子
tf.random.set_seed(42)
# 打乱数据
shuffled = ratings.shuffle(100_000, seed=42, reshuffle_each_iteration=False)
# 切分训练数据以及测试数据
train = shuffled.take(80_000)
test = shuffled.skip(80_000).take(20_000)

获取词汇表

获取用户Id以及电影标题的词汇表,后续以词汇表将原始特征值映射到连续范围内的整数,方便训练时在嵌入表中查找相应的嵌入向量。

# 获取数据集中的电影标题
movie_titles = ratings.batch(1_000_000).map(lambda x: x["movie_title"])
# 获取数据集中的用户ID
user_ids = ratings.batch(1_000_000).map(lambda x: x["user_id"])<
http://www.lryc.cn/news/168912.html

相关文章:

  • ROS2-IRON Ubuntu-22.0 源码下载失败解决方法 vcs import --input
  • 百度SEO优化技巧大揭秘(百度SEO优化策略,提升网站排名)
  • JavaScript:二进制数组【笔记】
  • 华为云认证考试包含哪些内容?
  • 进程程序替换
  • 理解HTTPS/TLS/SSL(二)可视化TLS握手过程并解密加密数据
  • 一文详解TCP三次握手四次挥手
  • PDF怎么转图片?四种转换方法分享
  • 华为OD机试 - 压缩报文还原 - 正则表达式(Java 2023 B卷 100分)
  • 电商API的应用价值:淘宝1688京东API接口系列
  • day38 代码回想录 斐波那契数爬楼梯使用最小花费爬楼梯
  • Flink DataStream 体系
  • Linux的调试工具 - gdb(超详细)
  • 已知平面内三点,求其平面的法向量
  • HTML
  • Java手写最大子数组和算法(如Kadane算法)和最大子数组和算法(如Kadane算法)应用拓展案例
  • 掌握NVM、NRM和NPM:Node.js开发的利器
  • Nacos 2.2.3 部署到linux
  • 设计模式之十:状态模式
  • Python 的运算符和语句(条件、循环、异常)基本使用指南
  • 文心一言 VS 讯飞星火 VS chatgpt (94)-- 算法导论9.2 3题
  • React中组件通信01——props
  • 接口测试——接口协议抓包分析与mock_L1
  • 四种常用的自动化测试框架
  • Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
  • Unity 安装及运行MLAgents
  • LightDB-A 兼容oracle支持mod操作符
  • SpringMVC之自定义注解
  • QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目
  • 【小沐学写作】程序员必备技能:在线协作文档汇总