MovieRecommendSystemCode
Scala
Scala, JavaScript, CSS, HTML
共208个文件
crc: 66
parquet: 52
class: 26
xml: 12
scala: 9
js: 8
css: 5
map: 4
csv: 3
json: 3
基于Spark MLlib平台的协同过滤电影推荐
项目名称
基于Spark MLlib平台的协同过滤电影推荐
项目介绍
本项目研究基于Spark MLlib平台的协同过滤电影推荐系统。首先,使用爬虫工具从电影网站爬取电影信息和用户评论,并对原始数据进行探索分析。然后,对数据进行预处理,包括处理重复、缺失和异常数据。接着,构建特征和属性处理,包括属性规约、统计历史热门电影、最近热门电影、电影平均得分和类型优质电影等,并对数据进行编码。电影推荐模型使用基于物品协同过滤算法和 Spark ALS 算法的推荐模型,并对模型进行评测和预测。最后,将模型应用于实际场景,使用模型向用户推荐20部电影,并使用Highcharts图表库实现可视化大屏展示。本项目的研究对于电影推荐系统的发展具有重要意义,有助于提高推荐系统的准确性和多样性。
分析方法及工具使用
1、 编写代码工具IDEA2019和Anaconda3
2、 电影数据爬取使用Python3.9
3、 原始数据存储使用Hadoop3.1.3
4、 数据处理使用Spark3.1.3快速运算
5、 处理后数据存储使用MongoDB5.6数据库
6、 可视化大屏使用HTML、CSS、Highcharts图表库
项目架构图
项目结构
首先,使用爬取数据的脚本获取电影数据。然后,将获取到的数据保存到HDFS(Hadoop分布式文件系统)中。从HDFS中读取数据并将其导入到MongoDB数据库中。接下来,使用SparkSQL对数据进行处理,并将处理结果再次保存到MongoDB数据库中。同时,使用SparkMLlib生成模型,并将模型保存到HDFS中。最后,将数据统计分析结果和模型推荐结果通过Highcharts以图的方式呈现出来,如下图所示。
├─.idea
│ ├─codeStyles
│ ├─inspectionProfiles
│ └─libraries
├─data // 项目所需数据
│ ├─ALSBestModel
│ ├─ALSBestParam
│ ├─ALSTipDM
│ ├─BaseData // 原始数据
│ ├─bestModel
│ ├─ItemCFModel
│ └─web_data // 可视化大屏JSON数据
├─GetMoiveData // 爬虫源码
├─image // 结果图
├─resources // 日志设置
├─src // 推荐源码
└─VisualLargeScreen // 可视化源码
├─css
├─fonts
└─js
实现流程
爬取数据:爬取数据用Python进行爬取,如urllib、fake_useragent、requests、lxml等。
数据存储:将文件数据导入数据库,用MongoDB进行存储。
基础数据探索:用SparkRDD,SparkSQL等探索数据本身特征,如记录数探索,数据类型分析,缺失、冗余、重复、异常数据探索分析,并使用表格进行辅助展示。
数据业务方面的探索:用SparkRDD,SparkSQL等结合项目目标,探索相关字段的数值分布情况,字段与字段之间的联系,得出相关结论。
数据预处理:使用SparkRDD、SparkSQL等对数据进行预处理,如处理重复数据、缺失数据、异常数据,并构建特征和属性处理。
模型构建:用基于物品过滤协同算法和SparkALS算法等,选取合适数据作为建模样本数据,构建不同的智能推荐模型并进行评估,根据模型的效果情况对模型进行优化,确定最终模型。选择效果较优的为最终模型,将模型保存,并将其应用至实际产生的数据,得出推荐结果集。
可视化平台,将电影数据和推荐结果数据以网站形式呈现出来。使用Highcharts图表库。
可视化图(非响应式)
警告:此数据来源于豆瓣电影,仅适用于个人学习与研究目的。严禁将其用于商业用途。
https://gitee.com/lin-jiming/MovieRecommendSystemCode
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目概述:本Scala源码项目构建于Spark MLlib平台之上,实现了一套协同过滤的电影推荐系统。项目共包含208个文件,以Scala为主要编程语言,同时整合了JavaScript、CSS和HTML技术。 文件构成: - Scala源文件:9个,主要用于实现推荐系统的核心逻辑; - JavaScript文件:8个,负责前端的交互逻辑; - CSS样式表:5个,定义了用户界面的视觉效果; - HTML页面:未明确统计,用于构建用户交互界面; - 配置与数据文件:包括crc文件66个,parquet文件52个,用于存储系统配置和电影数据; - 类定义:26个class文件,构成系统的业务逻辑框架; - XML配置:12个,用于配置系统设置和参数; - 地图数据:4个map文件,可能用于数据可视化或地理信息处理; - 数据格式文件:csv文件3个,json文件3个,用于数据交换和存储。 项目核心功能:基于Spark MLlib强大的计算能力,本项目实现了高效的协同过滤算法,为用户推荐电影,提升用户体验。 简而言之,该项目是一个集成了多种技术,专注于提供个性化电影推荐服务的Scala应用。
资源推荐
资源详情
资源评论
收起资源包目录
Spark MLlib协同过滤电影推荐系统Scala源码 (217个子文件)
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
_SUCCESS 0B
BuildModel.class 23KB
FeatureAttrProcess.class 22KB
ModelTipDM.class 22KB
UseModelRecommender.class 20KB
RecommendDishes$.class 15KB
DataExpPre$.class 13KB
MyConfig$.class 5KB
MongoConfig.class 5KB
DataWrite$.class 4KB
WebData$.class 4KB
UseModelRecommender$$typecreator5$2.class 3KB
UseModelRecommender$$typecreator5$1.class 3KB
FeatureAttrProcess$$typecreator5$2.class 3KB
FeatureAttrProcess$$typecreator5$1.class 3KB
DataExpPre.class 2KB
MyConfig.class 2KB
FeatureAttrProcess$.class 2KB
MongoConfig$.class 2KB
DataWrite.class 1KB
UseModelRecommender$.class 689B
RecommendDishes.class 676B
test$.class 645B
BuildModel$.class 641B
WebData.class 626B
ModelTipDM$.class 607B
test.class 607B
.part-00000-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00004-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00010-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00014-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00003-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00007-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00005-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00009-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00011-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00015-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00006-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00013-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00012-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00001-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00002-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00008-6d5ba609-eea9-4dae-9c0d-9bfe535e4ea9-c000.snappy.parquet.crc 2KB
.part-00000.crc 988B
.part-00001-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 608B
.part-00005-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 608B
.part-00006-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 608B
.part-00004-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 604B
.part-00008-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 604B
.part-00002-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 604B
.part-00003-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 604B
.part-00000-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 600B
.part-00007-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 592B
.part-00009-d2d6c49d-c267-4f6c-8567-8d7a6c645984-c000.snappy.parquet.crc 592B
.part-00005-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00007-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00003-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00000-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00008-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00012-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00009-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00011-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00001-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00010-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00004-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00013-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00002-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00006-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00015-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00014-973eb66f-55f8-49eb-bfea-74f693a086c6-c000.snappy.parquet.crc 100B
.part-00001-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00003-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00000-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00007-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00009-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00005-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00004-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00008-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00006-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00002-bc572841-5dbb-4a70-82f3-2cd458a73445-c000.snappy.parquet.crc 40B
.part-00000.crc 12B
.part-00000.crc 12B
.part-00000.crc 12B
.part-00000.crc 12B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
._SUCCESS.crc 8B
共 217 条
- 1
- 2
- 3
资源评论
沐知全栈开发
- 粉丝: 4739
- 资源: 3374
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功