机器学习算法,pyspark中的ALS算法,实现对用户的电影推荐。

文章目录

  • 机器学习算法,pyspark中的ALS算法,实现对用户的电影推荐。
    • 1. Spark是一个开源的并行计算与分布式计算框架,最大特点是基于内存运算,适合迭代运算,兼容Hadoop生态系统的组件,同时包括相关的测试和数据生成器。
    • 2. 主要用于解决全栈式批处理、结构化数据查询、流计算、图计算和机器学习的应用,适用于需要多次操作特定数据集的应用市场。
    • 3. 需要反复操作的次数越多,所需读取的数据量越大,效率提升越大,这方面比Hadoop快很多倍。
    • 4. 集成的模块:Spark SQL Spark Streaming MLlib GraphX SparkR(支持R语言的库)
    • 5. 基于spark的协同过滤推荐算法并灭有依赖具体的业务数据,比如电影的内容分析和用户特征属性分析,证明是一个通用的算法框架,可以用户其他行业的个性化推荐,比如餐饮推荐,音乐推荐等,只要将评分数据转化成.csv格式即可直接应用。

1. Spark是一个开源的并行计算与分布式计算框架,最大特点是基于内存运算,适合迭代运算,兼容Hadoop生态系统的组件,同时包括相关的测试和数据生成器。

2. 主要用于解决全栈式批处理、结构化数据查询、流计算、图计算和机器学习的应用,适用于需要多次操作特定数据集的应用市场。

3. 需要反复操作的次数越多,所需读取的数据量越大,效率提升越大,这方面比Hadoop快很多倍。

4. 集成的模块:Spark SQL Spark Streaming MLlib GraphX SparkR(支持R语言的库)

5. 基于spark的协同过滤推荐算法并灭有依赖具体的业务数据,比如电影的内容分析和用户特征属性分析,证明是一个通用的算法框架,可以用户其他行业的个性化推荐,比如餐饮推荐,音乐推荐等,只要将评分数据转化成.csv格式即可直接应用。

import pandas as pd
from pyspark.mllib.recommendation import ALS
# from pyspark.sql import SparkSession
from pyspark import SparkContext
import math
import warnings
import oswarnings.filterwarnings('ignore')
# pip install pyspark -i https://mirrors.aliyun.com/pypi/simple/print("1.加载评分文件……")
# spark = SparkSession.builder.master('local').appName("test_script").getOrCreate()
sc = SparkContext()
# sc.setLogLevel("ERROR")
small_raw_data = sc.textFile(os.path.normpath('dataset/ratings.csv'))
small_data = small_raw_data.map(lambda line: line.split(",")).map(lambda col:(col[0],col[1],col[2]))print("2.按照6:2:2分为训练集、验证集、测试集……")
training_RDD,validation_RDD,test_RDD = small_data.randomSplit([6,2,2],seed=10)
validation_predict_RDD = validation_RDD.map(lambda x:(x[0],x[1]))
test_predict_RDD = test_RDD.map(lambda x:(x[0],x[1]))print("3. 设置协同过滤推荐算法ALS(交替最小二乘法)参数……")
min_error = float('inf')
best_rank = 1
best_iteration =-1
regularization_param = 0.3
iterations = 10
seed = 10
ranks = [4,8,12]
errors = [0,0,0]
err = 0
for rank in ranks:model = ALS.train(training_RDD,rank,seed= 10,iterations=10,lambda_ =0.3)predict = model.predictAll(validation_predict_RDD).map(lambda r:((r[0]),r[1],r[2]))rate_pre = validation_RDD.map(lambda r:((int(r[0]),int(r[1])),float(r[2]))).join(predict)error = math.sqrt(rate_pre.map(lambda r:(r[1][0] - r[1][1])**2).mean())errors[err] = errorerr+= 1if error <min_error:min_error = errorbest_rank = rankprint("4.训练模型,确认最佳的秩(rank),确认最小误差……")
print("最佳秩值:", best_rank)
print("最小的误差:",min_error)
print("5.用最佳秩重新训练模型……")
model = ALS.train(training_RDD,best_rank,seed=seed,iterations=iterations,lambda_ =regularization_param)
# 保存模型
# model.save(sc,"spark_movie.model")
# sameModel = MatrixFactorizationModel.load(sc,"spark_movie.model")
print("6.使用测试集对模型进行测试……")
predictions = model.predictAll(test_predict_RDD).map(lambda r: ((r[0],r[1]),r[2]))
rates_p = test_RDD.map(lambda r: ((int(r[0]),int(r[1])),float(r[2]))).join(predictions)
error = math.sqrt(rates_p.map(lambda r:(r[1][0]-r[1][1])** 2).mean())
print('REMS = %s '%error)print("7.计算测试集最小误差……")
print("测试集最小误差RMSE=",error)print("8.预测用户对电影的评分……")
user_id =15
movie_id= 47
predictedRating = model.predict(user_id,movie_id)
print("用户编号:",user_id,"对电影:",movie_id,"的评分为:",predictedRating)print("9.向某一用户推荐10部电影:")
topKRecs = model.recommendProducts(user_id,10)
print("向用户编号:",user_id,"的用户推荐10部电影:")
for rec in topKRecs:print(rec)

数据集可以评论区找我要

使用协同过滤推荐算法进行电影推荐相关推荐

  1. 基于协同过滤算法的电影推荐系统设计(二) - ALS算法详解

    0 系列文章目录 0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介 0.2 基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍 ALS是alternating least squ ...

  2. 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统. 1 研究目标 从应用场景来看,基 ...

  3. Python实现基于用户的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于用户的协同过滤推荐(User-based CF)的原理假设: ...

  4. Python实现基于物品的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于物品的协同过滤推荐(Item-based CF)的假设原理为 ...

  5. 基于Mahout实现协同过滤推荐算法的电影推荐系统

    1 Mahout介绍 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更 ...

  6. 在线电影推荐网 Python+Django+Mysql 协同过滤推荐算法在电影网站中的运用 基于用户、物品的协同过滤推荐算法 开发在线电影推荐系统 电影网站推荐系统 人工智能、大数据、机器学习开发

    在线电影推荐网 Python+Django+Mysql 协同过滤推荐算法在电影网站中的运用 基于用户.物品的协同过滤推荐算法 开发在线电影推荐系统 电影网站推荐系统 人工智能.大数据.机器学习开发 M ...

  7. 《网络电视节目推荐系统----基于用户协同过滤与基于内容的推荐算法的后融合》

    文章目录 一.什么是推荐系统 二.产生原因 由上我们可以得知,推荐系统产生的两大原因 三.应用场景 四.推荐系统的评测方法 1. 推荐系统的三大实验方法 a. 离线实验: b. 用户调查 c. 在线实 ...

  8. 使用spark mllib中协同过滤推荐算法ALS建立推荐模型

    使用spark mllib中协同过滤推荐算法ALS建立推荐模型 package com.yyds.tags.ml.rs.rddimport org.apache.spark.mllib.evaluat ...

  9. 基于Python + Django + mysql的协同推荐算法的电影推荐系统

    基于Python + Django + mysql的协同推荐算法的电影推荐系统 本系统一共分为前台系统功能和后台系统功能两个模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连 ...

  10. 推荐策略产品经理:剖析协同过滤(千人千面推荐的核心 )

    本文为PMCAFF专栏作者凤城狂客出品 前文:剖析千人千面的大脑--推荐引擎部分,其中这篇是定位:对推荐引擎中的核心算法:协同过滤进行深挖. 首先,千人千面融合各种场景,如搜索,如feed流,如广告, ...

最新文章

  1. 基于双向LSTM和迁移学习的seq2seq核心实体识别
  2. 计算机专业申请,申请计算机专业
  3. 记录几个vim的命令
  4. painticon java_新人,关于java的 paintIcon()方法
  5. 自定义 View 功能上线,你的小程序可以更多变
  6. 游戏动作师使用Unity3D遇到过的所有问题
  7. Python并发之协程gevent基础
  8. MySQL 复制技术的发展
  9. 简单整理一下以英文字母命名或者开头的语言
  10. c语言数字大小32768,c语言中int(2byte)的表示范围是为什么是-32768~32767!
  11. 页面中多次使用TWEEN.update()的坑
  12. 排序算法——冒泡排序(Bubble Sort)
  13. java中linux下反斜杠,Linux下反斜杠号\引发的思考
  14. 计算机毕业设计开题报告怎么写?【详细说明】
  15. 贪心算法背包问题java
  16. 使用NAT打造FTP服务新法
  17. 最笨的管理,就是什么事都自己做
  18. 找工作:java开发三年工作经验
  19. Consul入门05 - 健康检测 1
  20. 马斯克认怂重启推特收购,价格还是440亿美元,推特股价应声大涨

热门文章

  1. 超详细的抖音养号上热门技巧,看完这一篇就够了
  2. 苹果电脑win10蓝牙音响卡顿_win10系统蓝牙音箱卡顿声音断断续续的处理办法
  3. ubuntu如何安装rpm
  4. python的jira库操作
  5. c mysql_stmt游标移动_MySql数据库--stmt语句(续)
  6. 感性负载与容性负载的区别
  7. 为什么PMOS比NMOS的沟道导通电阻大,速度慢,价格高-透彻详解
  8. 一种简单的电荷泵驱动NMOS管电路
  9. (模拟)西天取经放弃了(python类实践)
  10. 扩展欧几里得求乘法逆元 - 手算(结尾附视频)