基于Python Spark的推荐系统

本文介绍了如何基于Python Spark的pyspark库构建推荐系统,使用ALS算法对MovieLens数据集进行训练,详细阐述了数据准备、模型训练、推荐过程,并展示了如何显示推荐电影的名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALS推荐算法

Spark MLlib中实现了ALS(Alternating Least Squares)基于协同过滤的推荐算法。


MovieLens数据集

MovieLens数据集收集了大量用户对不同电影的评分,详情见数据集官网http://grouplens.org/datasets/movielens

下载ml-100k数据至工作目录中,终端输入命令:

mkdir -p ~/pythonwork/PythonProject/data
cd ~/pythonwork/PythonProject/data
wget http://files.grouplens.org/datasets/movielens/ml-100k.zip
unzip -j ml-100k

启动 Hadoop Muti Node Cluster,复制ml-100k至HDFS中

start-all.sh
hadoop fs -mkdir /user/yyf/data
hadoop fs -copyFromLocal -f ~/pythonwork/PythonProject/data /user/yyf/
hadoop fs -ls /user/yyf/data


启动Ipython Notebook(Hadoop YARN-client模式)

终端输入命令:

cd ~/pythonwork/ipynotebook
PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook" HADOOP_CONF_IR=/usr/local/hadoop/etc/hadoop MASTER=yarn-client pyspark


准备数据

ALS算法训练数据的格式是Rating RDD数据类型

1、配置文件读取路径(IPython/Jupyter Notebook中键入以下命令)

global Path
if sc.master[:5]=="local":
    Path="file:/home/yyf/pythonwork/PythonProject"
else:
    Path="hdfs://master:9000/user/yyf/"

2、导入ml-100k数据u.data

rawUserData=sc.textFile(Path+"data/u.data")
rawUserData.count()

这里写图片描述

上图,4个字段分别是:用户id、项目(电影)id、评分、评分日期

导入Rating模块,读取rawUserData前3个字段,按照用户id、电影id、用户对电影的评分来编写rawRatings

rawRatings=rawUserData.map(lambda line:line.split("\t")[:3])
## 取前5项
rawRatings.take(5)

这里写图片描述

3、准备ALS训练数据

ALS训练数据格式 Rating RDD数据类型定义如下:

Rating(user,product,rating)

其中,user字段是用户编号,product是产品编号,rating是用户对产品的评价

这里写图片描述

第一行表示:编号为196的用户对编号为242的电影的评分为3

统计用户数和电影数:
这里写图片描述


训练模型

1、导入ALS模块

from pyspark.mllib.recommendation import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值