基于Python Spark的推荐系统

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 ALS

使用ALS.train进行训练,两种训练模式:显式评分训练与隐士评分训练:

  • 显式评分(Explicit Rating)训练

使用实际的电影评分,ALS.train(ratings,rank,iterations

  • 7
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于PythonSpark的电影推荐系统是一种利用机器学习和大数据技术,为用户提供个性化的电影推荐服务的系统。 该系统首先通过Spark平台进行数据分析和处理,主要包括数据清洗、特征提取和模型训练。通过清洗原始数据,去除重复、缺失和异常数据,保证数据的准确性。然后,通过特征提取,提取电影和用户的相关特征,如电影类型、演员、导演、用户的观影历史等。最后,利用机器学习算法,如协同过滤、基于内容的推荐等,对提取出的特征进行建模和训练,得到电影推荐模型。 在用户使用该系统时,系统会根据用户的个人兴趣和喜好,结合用户的观影历史和其他用户的评价数据,为用户推荐最合适的电影。具体来说,系统会根据用户的观影历史,分析用户的偏好,包括他们最喜欢的类型、演员、导演等。然后,系统会根据这些个性化的偏好,结合其他用户的评价数据,找到与用户兴趣最相似的电影,推荐给用户。 该推荐系统的优势是通过使用Spark平台,可以有效地处理大规模的数据集,提高算法的计算效率和推荐准确率。另外,Python是一种易于学习和使用的编程语言,也有丰富的机器学习和数据处理库,方便开发人员进行系统的开发和维护。 总结而言,基于PythonSpark的电影推荐系统能够为用户提供个性化、准确度高的电影推荐服务,提高用户的观影体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值