计算机毕业设计python+spark知识图谱音乐推荐系统 音乐数据分析可视化大屏 音乐爬虫 LSTM情感分析 大数据毕设 深度学习 机器学习

本科毕业设计(论文)开题报告

课题名称

基于Spark的音乐推荐与数据分析系统

的设计与实现

课题类型

系统设计

学院

大数据与人工智能学院

班级

专业

数据科学与大数据技术

指导教师

职称

学生姓名

学号

重庆工程学院教务处制

1.课题名称、来源、选题依据

1.1课题名称

基于Spark的音乐推荐与数据分析系统的设计与实现

1.2课题来源

课题来源于算法研究。

1.3选题依据

互联网在如今的爆发式发展已经改变了我们的生活方式,互联网上资源的爆发式增长让获取有效信息成为了新的难题[1]。用户接触到的信息非常有限。于是很多提出帮助用户快速精准找到所需信息的解决方案诞生了,例如搜索引擎,推荐系统等。

目前大型的音乐门户类网站的歌曲库规模往往包含上千万首的歌曲,这些歌曲被划分成不同的语种、流派、年代、主题、心情、场景等,包含的信息非常的丰富,存在着严重的信息过载[2]。对于系统中每一位音乐用户来说,都不可能去收听曲库内的每一首歌, 很多时候用户的需求往往是“一首或几首好听的歌曲”这种模糊的需求,如何根据用户在系统中产生的行为信息去庞大的歌曲库中挖掘出用户可能感兴趣的音乐,这就需要个性化音乐推荐系统综合考虑用户偏好、时间、地点、环境等各种复杂的特征[3],准确的从上千万的海量歌曲库中挑选出此时此刻最适合这个用户聆听的个性化音乐,给广大的用户带来美的享受,真正做到众口可调。

2.课题国内外研究现状和发展趋势

2.1国外研究现状

国内的音乐推荐技术发展相对缓慢。大多数音乐网站采用的技术不够成熟,基本上是针对所有用户,大数据成分太少[1]。不过,经过一段时间的发展,国内也涌现出了一些优秀的音乐推荐网站,比如 SongTaste、虾米网和豆瓣网等。SongTaste 是一个社交性质的音乐网站。在它的社区中,每一个用户都可以看到大家最近在收听什么音乐、有什么新的音乐推荐[2]。它的音乐分类相当齐全,而且推荐排行实时更新。另外,根据用户平时推荐的音乐、听歌行为以及音乐收录信息,还能够找到“相似的品味者”,从而更好地做出推荐。豆瓣网也是一个社交性的音乐推荐网站。它主要通过豆瓣小组、新浪微博、MSN、开心网、人人网等互动平台来分享和传播用户喜欢的音乐。虾米网在注册成为网站会员时会让用户选择至少5位艺人进行收藏,以此来初步确定用户欣赏音乐的倾向[3]。另外,用户还可以从大家的推荐中搜索自己喜爱的音乐,或者从品味相似的好友中找到适合自己的音乐[4]。

2.2国内研究现状

国外研究现状:大数据推荐系统的定义是 Resnick 和 Varian 在 1997 年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程”[5]。从最初在电子商务网站的深度剖析,到当下在的音乐、电影、学习资料等不同领域的广泛应用。在三十多年的时间里,大数据推荐系统一直是学术界和工业界的关注的焦点。其优点在于主动性。它能自发地收集并分析用户的行为数据,为用户的兴趣建模,得到用户的兴趣偏好后,匹配系统中资源的特征,为用户做出有效的大数据推荐[6]。同时,推荐引擎要一直监测系统中的项目变化和用户在不同行为下的兴趣特征变迁,针对不同的变动,做出相应推荐策略的调整[7]。各平台为增加用户的黏着性,以及用户对推荐结果的准确度要求,使得推荐系统的核心技术层出不穷[8],比较成熟的推荐技术有:基于内容的推荐、协同过滤(基于相似度的最邻近协同过滤算法、基于潜在因子的矩阵分解推荐算法)、深度学习、基于标签的推荐系统、混合推荐算法等。

2.3发展趋势

综上所述,Spark在处理音乐数据方面有一些独特的技术优势。例如,Spark的MLlib库提供了多种机器学习算法,可以用于处理音乐数据,包括协同过滤、分类、聚类等。此外,Spark的流处理技术也可以用于实时音乐推荐。随着人工智能和机器学习技术的不断发展,Spark在音乐推荐方面的应用也将不断加强。例如,Spark可以使用深度学习算法来对音乐数据进行更深入的分析和处理,以提高音乐推荐的精准度和用户满意度。

3.本课题的目的及意义

  • 解决音乐推荐中的冷启动问题。在音乐推荐系统中,新用户或新音乐的加入往往导致数据稀疏性问题,从而影响推荐系统的准确性。Spark音乐推荐系统通过使用基于邻域的协同过滤算法和基于物品的协同过滤算法,结合基于模型的推荐算法,可以有效缓解数据稀疏性问题,提高推荐系统的准确性。
  • 提高音乐推荐的实时性。Spark音乐推荐系统通过使用基于模型的推荐算法和流处理技术,可以实时处理用户行为数据,并及时为用户提供音乐推荐服务。这有助于提高用户体验,增加用户粘性。
  • 实现个性化音乐推荐。Spark音乐推荐系统通过使用混合推荐算法,结合用户属性和物品属性,可以推算出用户对未知音乐的喜好程度,实现个性化音乐推荐。这有助于满足不同用户的个性化需求,提高用户满意度。
  • 推动音乐产业的发展。Spark音乐推荐系统的应用可以帮助音乐平台更好地理解用户需求,提供更精准的音乐推荐服务,从而提高用户满意度和忠诚度。这有助于推动音乐产业的发展,促进音乐创新和多样性。

4.本课题的任务、重点内容、研究方法、实现途径、进度计划

4.1课题任务

系统实现用户对音乐评分的搜集(python爬虫爬取数据),后端使用大数据推荐算法构造,前端使用Vue框架搭建大数据音乐推荐系统。系统数据库使用了关系型数据库MySQL。前端收集过用户行为数据后传到后端使用基于用户的协同过滤算法来推荐出用户可能喜欢的音乐。采用BS架构,使用Java程序设计语言、MySQL数据库、Spark实时分析、Java开发工具IDEA编写程序、Tomcat模拟服务器、Java的JDK8运行环境、Navicat等工具开发而来。

4.2重点内容

  • 第一部分:爬虫爬取音乐数据(网易云音乐网站),作为测试的数据集
  • 第二部分:离线推荐系统:python+机器学习离线推荐(基于物品的协同过滤算法,相似度衡量方法:皮尔逊相似度) ,必要时可以集成算法框架比如tensflow pytroch等,推荐结果通过pymysql写入mysql
  • 第三部分:在线应用系统: springboot进行在线推荐 vue.js构建推荐页面(含知识图谱)
  • 第四部分:使用Spark构建大屏统计

4.3研究方法

  • 数据收集和分析:首先需要收集大量的音乐数据,包括歌曲信息、用户听歌记录、评价等,然后对这些数据进行深入的分析,以了解用户的行为模式和喜好。
  • 特征提取:从收集到的音乐数据中提取出有效的特征,比如歌曲的流行度、风格、演唱者、歌词内容等,以及用户的年龄、性别、听歌历史等。
  • 模型构建:根据提取出的特征,构建推荐模型,比如基于协同过滤的模型、基于内容的模型、混合推荐模型等。
  • 模型评估:使用一定的评估指标对模型进行评估,比如准确率、召回率、F1得分等,以检验模型的推荐效果。
  • 模型优化:根据评估结果对模型进行优化,比如调整参数、增加特征等,以提高模型的推荐效果。
  • 系统实现:将优化后的模型集成到Spark音乐推荐系统中,实现个性化音乐推荐服务。

4.4实现途径

  • Selenium自动化Python爬虫工具采集网易云音乐、评论数据约1000万条存入.csv文件作为数据集;
  • 使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs;
  • 使用hive数仓技术建表建库,导入.csv数据集;
  • 离线分析采用hive_sql完成,实时分析利用Spark之Scala完成;
  • 统计指标使用sqoop导入mysql数据库;
  • 使用springboot+vue.js+echarts进行可视化大屏开发;
  • 使用基于物品的协同过滤算法,相似度衡量方法:皮尔逊相似度等算法实现个性化音乐推荐;
  • 使用卷积神经网络KNN、CNN实现音乐流量预测;
  • 搭建springboot+vue.js前后端分离web系统进行个性化推荐界面、流量预测界面、知识图谱等实现;

4.5本课题的进度时间安排;

①2023.11.13-2023.12.10:完成开题报告。

②2023.12.11-2023.12.18:完成音乐数据爬取与处理工作。

③2023.12.19-2023.12.26:完成数据仓库设计。

④2023.12.27-2024.01.11:完成Hive和Hadoop、Spark的环境搭建工作。

⑤2024.01.12-2024.02.25:完成推荐算法与数据可视化功能开发。

⑥2024.02.01-2024.02.29:完成毕业设计(论文)初稿。

⑦2024.03.01-2024.03.15:中期检查及项目功能完善。

⑧2024.03.16-2024.04.14:功能完善以及毕业设计(论文)定稿查重。

⑨2024.04.15-2024.04.30:毕业设计(论文)评阅,根据评阅老师意见修改论文,完善设计。

⑩2024.05.01-2024.05.26:毕业设计(论文)答辩。

5.完成本课题所需工作条件(如工具书、计算机、实验、调研等)及解决办法

本课题所需工作条件

①Windows10系统电脑一台、16G内存、8核处理器

②编辑器:Python 3.8、Anaconda 3、PyCharm、VMware、IDEA

③Navicat Premium 15

④MySQL、Hive、Hadoop、Azkaban、Spark

参考文献

[1]LAWRENCERD, ALMASIGS, KOTLYARV, et al. Personalization of supermarket product recommendations[ R]. IBM Research Report,2020(7):173-181

[2]徐小伟. 基于信任的协同过滤推荐算法在电子商务推荐系统的应用研究. 东华大学. 2023

[3] 吴正洋. 个性化学习推荐研究. 华南师范大学期刊.2021

[4]李雪. 基于协同过滤的推荐系统研究. 吉林大学. 2020

[5]《数据库系统概论》[M],高等教育出版社. 2020

[6]马建红.JSP应用与开发技术.第三版.清华大学出版社.2022

[7] JavaEE架构设计与开发实践[M],方巍著:清华大学出版社.2022.1

[8] Spring Boot编程思想核心篇[M],小马哥著:电子工业出版社.2023.4

[9] Spring Boot开发实战M].吴胜著:清华大学出版社.2023.6

[10]Oleg Sukhoroslov. Building web-based services for practical exercises in parallel and distributed computing[J]. Journal of Parallel and Distributed Computing.2023.

指导教师意见

该开题报告的实验设计部分详细说明了实验环境、实验数据、实验方法和实验结果等,具有可行性和可操作性。预期成果部分也明确了研究的目标和可能取得的成果,为后续的研究提供了清晰的方向和目标。重点任务明确、研究方法得当、实现途径清晰、进度安排合理。同意开题

签字:               年   月   日

系(教研室)意见

通过研究内容和方法合理,同意开题

     系(教研室)主任签字:      年   月   日

核心算法代码分享如下:

#Flink连接HDFS上面的CSV文件 使用Flink_SQL分析完入表
## 启动hadoop
## cd /data/hadoop/sbin
## sh /data/hadoop/sbin/start-all.sh
## 启动hive
## cd /data/hive
## nohup hive --service metastore &
## nohup hive --service hiveserver2 &
import os
from pyflink.common import Row
from pyflink.table import (EnvironmentSettings, TableEnvironment, TableDescriptor, Schema,DataTypes, FormatDescriptor)
from pyflink.table.expressions import lit, col
from pyflink.table.udf import udtf
import logging
import syslogging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(message)s")env_settings = EnvironmentSettings.in_streaming_mode()
table_env = TableEnvironment.create(env_settings)jars = []
for file in os.listdir(os.path.abspath(os.path.dirname(__file__))):if file.endswith('.jar'):file_path = os.path.abspath(file)jars.append(file_path)str_jars = ';'.join(['file:///' + jar for jar in jars])
table_env.get_config().get_configuration().set_string("pipeline.jars", str_jars)
# table_env.get_config().get_configuration().set_float('taskmanager.memory.network.fraction',0.8)
# table_env.get_config().get_configuration().set_string('taskmanager.memory.network.min','8gb')
# table_env.get_config().get_configuration().set_string('taskmanager.memory.network.max','16gb')
table_env.get_config().get_configuration().set_string('parallelism.default','1')
#先读取hadoop_hdfs上的CSV文件
table_env.execute_sql("""create  table ods_earthquake(`magnitude` double COMMENT '震级(M)',`stime_long` string COMMENT '发震时刻(UTC+8)',`latitude` string COMMENT '纬度(°)',`longitude` string COMMENT '经度(°)',`depth` bigint COMMENT '深度(千米)',`addr`  string COMMENT '参考位置',`stime_short` string COMMENT '年月日',`data_type` string COMMENT '数据类型(用于区分中国外国)',`long_province` string COMMENT 'echarts中国地图省份专用字段(外国是:无(外国))',`stime_year` string COMMENT '年',`stime_month` string COMMENT '月',`stime_clock` string COMMENT '时刻中的时') WITH('connector' = 'filesystem','path' ='hdfs://bigdata:9000/earthquake/ods_earthquake/earthquake_hdfs.csv','format' = 'csv')   """)#设置下沉到mysql的表
table_env.execute_sql("""create  table table05(`addr` string primary key ,`num` bigint ) WITH('connector' = 'jdbc','url' = 'jdbc:mysql://bigdata:3306/hive_earthquake','table-name' = 'table05','username' = 'root','password' = '123456','driver' = 'com.mysql.jdbc.Driver')   """)#数据分析并且导入
#result=table_env.sql_query("select * from ods_zymk limit 10 ")
table_env.execute_sql("""insert into table05select addr  , count(*) numfrom ods_earthquakeWHERE data_type <> '外国'GROUP BY addr order by num desclimit 10;""").wait()
#print("表结构",result.get_schema())
#print("数据检查",result.to_pandas())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速变得专业:掌握类的基本概念-类/方法/关键字/变量/数据类型/注释

在李笑来的《财富自由之路》中提到一种初学者快速入门的学习方法&#xff1a;快速掌握最小必要知识。 关于Java的类&#xff0c;最少必要知识就是本文提到的基本概念&#xff0c;掌握了这些基本概念&#xff0c;就对类有了基本的了解&#xff0c;为后续的深入学习和沟通奠定了基…

智慧油田三维电子沙盘系统

深圳易图讯科技(www.3dgis.top)智慧油田三维电子沙盘系统采用三维GIS、大数据、云计算、虚拟现实、物联网、AI等前沿技术&#xff0c;支持无人机航拍、高清卫星影像、DEM高程数据、矢量数据、无人机倾斜摄像、BIM模型、点云、城市白模、等高线、标高点等数据融合和切换&#xf…

【ESP32接入ATK-MO1218 GPS模块】

【ESP32接入ATK-MO1218 GPS模块】 1. 引言2. ATK-MO1218 GPS模块概述3. 接入ATK-MO1218 GPS模块的步骤4. 示例代码5. 结论1. 引言 在现代的嵌入式系统和物联网项目中,精确的位置信息是至关重要的。ATK-MO1218 GPS模块作为一款高性能的GPS/北斗双模定位模块,为开发者提供了强…

项目管理-计算题公式-补充【复习】

1.EMV决策树 定义&#xff1a;用决策树在若干备选行动方案中选择一个最佳方案。在决策树 中&#xff0c;用不同的分支代表不同的决策或事件&#xff0c;即项目的备选路径。每个决策或事件 都有相关的成本和单个项目风险(包括威胁和机会)。决策树分支的终点表示沿特 定路径发展的…

Xshell 7官网免费版下载与安装详细教程!学校/家庭使用免费哦~

一、 安装 1 卸载之前安装的xshell, 未安装忽略此步骤 2 解压本地文件&#xff0c;双击运行xshell**.exe, 按照提示安装 等候引导完成 3 点击下一步 4接受下一步 5 选择安装的路径 改成你自己的安装路径 6程序文件夹选择默认 7 取消勾选&#xff0c;激活之后操作 8 激活&…

Redis继续(黑马)

Redis持久化 RDB与AOF RDB记录是二进制数据&#xff0c;Redis停机时会触发保存&#xff0c;名称&#xff1a; dump.rdb 缺点&#xff1a;间歇式复制可能存在宕机数据更新丢失 AOF 记录的写操作命令&#xff0c;每秒记录一下&#xff0c;也存在数据更新丢失的可能&#xff0c;相…

视频剪辑批量转码技巧:如何将MP4视频快速转换为MP3音频的方法

在视频剪辑和音频处理的领域中&#xff0c;经常需要将视频文件转换为音频文件&#xff0c;特别是将MP4视频转换为MP3音频。这样的转换不仅可以减少文件大小&#xff0c;方便传输和存储&#xff0c;还可以在不损失音频质量的情况下&#xff0c;方便在各种设备上播放。下面&#…

Ubuntu18.04解决有线网卡连接问题(不更新内核成功版)

https://www.realtek.com/Download/List?cate_id584 &#xff08;需要翻一下&#xff09; 不想自己去下载&#xff0c;直接去我资源里下载我上传的包就好啦(&#x1f602;&#x1f602;&#x1f602;刚刚看了下别人下载要VIP还是自己去网站下很快的) 下载后解压&#xff0c;在…

基于Springboot的家教管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的家教管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

实验12:综合实验

1、实验目的及要求&#xff1a; 通过本次实验完成一个小型网络中配置设备。实现配置一个路由器、两个交换机和两台PC&#xff0c;以支持IPv4和IPv6连接&#xff1b;路由器和交换机必须安全管理&#xff0c;配置VLAN间路由、DHCP、以太网通道和端口安全。通过登录思科网络技术学…

设计模式 六大原则之开放封闭原则

文章目录 定义理解 小结 定义 开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的&#xff0c;但对于修改是封闭的。这意味着应该用抽象定义结构&#xff0c;用具体实现扩展细节&#xff0c;以此确保软件系统开发和维护过程的可靠性。 理解 怎么理解这个呢&#x…

PHP笔记

1. 搭建运行环境 1.1 挂载光盘 [rootredhat200 ~]# mount /dev/sr0 /mnt 1.2 配置仓库 # 查看仓库列表 [rootredhat200 ~]# dnf repolist# 进入到仓库目录 [rootredhat200 ~]# cd /etc/yum.repos.d/ # 编辑仓库文件 [rootredhat200 yum.repos.d]# vim base.repo # 查看仓库…

08.4.grafana自定义图形并直接数据库取值

grafana自定义图形并直接数据库取值 自定义添加油表图形 选择gauge图形&#xff0c;并且配置对应设定值&#xff0c;点击应用 如图所示&#xff0c;可以看到仪表盘上的值是zabbix上取得值 配置grafana直接数据库取值 添加mysql数据源 添加后进行配置&#xff0c;我这…

JS解密之新js加密实战(二)

前言 上次发了一篇关于新加密的&#xff0c;只解了前边两层&#xff0c;这中间家里各种事情因素影响&#xff0c;没有继续进一步研究&#xff0c;今天百忙之中抽空发布第二篇&#xff0c;关于其中的一小段加密片段&#xff0c;我认为分割成多个小片段是更容易被理解的。逻辑相…

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…

牛客NC363 开锁【中等 BFS Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/e7cbabbf7e0a41ec98055ee5f3d33bbe https://www.lintcode.com/problem/796 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#x…

SpringBoot整合SpringScurity权限控制(菜单权限,按钮权限)以及加上SSH实现安全传输

文章目录 项目地址&#xff1a; 一、md5 与 先进的哈希算法的区别1.1. 安全性问题1.2. 设计目的1.3. 功能特性1.4. 适用性1.5. 总结 二、数据传输安全和数据加密实现&#xff1a;2.1 生成证书&#xff1a;2.2、在springboot中进行集成2.2.1 配置证书&#xff1a;2.2.2. 强制使用…

4.1 编写程序,从键盘接收一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符

方法一&#xff1a; 运行效果&#xff1a; 输入B&#xff0c;输出显示ABC&#xff1b;输入A&#xff0c;输出显示AB 思路&#xff1a; 1、通过键盘输入接收一个字母。 2、将输入的字母减去1&#xff0c;得到前导字符&#xff0c;然后输出。 3、将输入的字母加上1&#xff0c;得…

【js下载文本文件】

功能 使用js下载dom的文本内容 原理 a标签下载功能 代码 <p id"p2">66666666</p><button onclick"downloadInnerHtml(filename2,#p2)">下载</button><script>var filename2 新建文档; //默认文本名字function downloa…

【问题实操】银河高级服务器操作系统实例分享,开机之后反复重启

1.服务器环境以及配置 物理机/虚拟机/云/容器 物理机 外网/私有网络/无网络 私有网络 处理器&#xff1a; PHYTIUM FT2000PLUS 2200 MHz 内存&#xff1a; 128 GiB 整机类型/架构&#xff1a; HIKVISION DS-V BIOS版本&#xff1a; HK 601FBE02HK 网卡&#xff1…