计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能

本文主要是介绍计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发技术
协同过滤算法、机器学习、LSTM、vue.js、echarts、django、Python、MySQL


创新点
协同过滤推荐算法、爬虫、数据可视化、LSTM情感分析、短信、身份证识别


补充说明
适合大数据毕业设计、数据分析、爬虫类计算机毕业设计


介绍

  • 音乐数据的爬取:爬取歌曲、歌手、歌词、评论
  • 音乐数据的可视化:数据大屏+多种分析图【十几个图】
  • 深度学习之LSTM 音乐评论情感分析
  • 交互式协同过滤音乐推荐: 2种协同过滤算法、通过点击歌曲喜欢来修改用户对歌曲的评分
  • 歌词、乐评的词云
  • 登录、注册、修改个人信息等【集成身份证识别、短信验证码等】

核心算法代码分享如下:

# coding = utf-8# 基于项目的协同过滤推荐算法实现
import randomimport math
import pymysql                          #数据库
from operator import itemgetterfrom config import cnnclass ItemBasedCF():# 初始化参数def __init__(self):# 找到相似的8个,为目标用户推荐4个self.n_sim_movie = 8self.n_rec_movie = 4# 将数据集划分为训练集和测试集self.trainSet = {}self.testSet = {}# 用户相似度矩阵self.movie_sim_matrix = {}self.movie_popular = {}self.movie_count = 0print('Similar movie number = %d' % self.n_sim_movie)print('Recommneded movie number = %d' % self.n_rec_movie)# 从数据库得到“用户-物品”数据def get_dataset(self, pivot=0.75):trainSet_len = 0testSet_len = 0cnn.ping(reconnect=True)cursor = cnn.cursor()sql = ' select * from tb_rate'cursor.execute(sql)for item in cursor.fetchall():user, movie, rating = item[1:]self.trainSet.setdefault(user, {})self.trainSet[user][movie] = ratingtrainSet_len += 1self.testSet.setdefault(user, {})self.testSet[user][movie] = ratingtestSet_len += 1cursor.close()# cnn.close()print('Split trainingSet and testSet success!')print('TrainSet = %s' % trainSet_len)print('TestSet = %s' % testSet_len)# 读文件,返回文件的每一行def load_file(self, filename):with open(filename, 'r') as f:for i, line in enumerate(f):if i == 0:  # 去掉文件第一行的titlecontinueyield line.strip('\r\n')print('Load %s success!' % filename)# 计算物品之间的相似度def calc_movie_sim(self):for user, movies in self.trainSet.items():for movie in movies:if movie not in self.movie_popular:self.movie_popular[movie] = 0self.movie_popular[movie] += 1self.movie_count = len(self.movie_popular)print("Total movie number = %d" % self.movie_count)for user, movies in self.trainSet.items():for m1 in movies:for m2 in movies:if m1 == m2:continueself.movie_sim_matrix.setdefault(m1, {})self.movie_sim_matrix[m1].setdefault(m2, 0)self.movie_sim_matrix[m1][m2] += 1print("Build co-rated users matrix success!")# 计算物品之间的相似性 similarity matrixprint("Calculating movie similarity matrix ...")for m1, related_movies in self.movie_sim_matrix.items():for m2, count in related_movies.items():# 注意0向量的处理,即某物品的用户数为0if self.movie_popular[m1] == 0 or self.movie_popular[m2] == 0:self.movie_sim_matrix[m1][m2] = 0else:self.movie_sim_matrix[m1][m2] = count / math.sqrt(self.movie_popular[m1] * self.movie_popular[m2])print('Calculate movie similarity matrix success!')# 针对目标用户U,找到K部相似的物品,并推荐其N部物品def recommend(self, user):K = self.n_sim_movieN = self.n_rec_movierank = {}if user>len(self.trainSet):user = random.randint(1, len(self.trainSet))watched_movies = self.trainSet[user]for movie, rating in watched_movies.items():for related_movie, w in sorted(self.movie_sim_matrix[movie].items(), key=itemgetter(1), reverse=True)[:K]:if related_movie in watched_movies:continuerank.setdefault(related_movie, 0)rank[related_movie] += w * float(rating)return sorted(rank.items(), key=itemgetter(1), reverse=True)[:N]# 产生推荐并通过准确率、召回率和覆盖率进行评估def evaluate(self):print('Evaluating start ...')N = self.n_rec_movie# 准确率和召回率hit = 0rec_count = 0test_count = 0# 覆盖率all_rec_movies = set()for i, user in enumerate(self.trainSet):test_moives = self.testSet.get(user, {})rec_movies = self.recommend(user)for movie, w in rec_movies:if movie in test_moives:hit += 1all_rec_movies.add(movie)rec_count += Ntest_count += len(test_moives)precision = hit / (1.0 * rec_count)recall = hit / (1.0 * test_count)coverage = len(all_rec_movies) / (1.0 * self.movie_count)print('precisioin=%.4f\trecall=%.4f\tcoverage=%.4f' % (precision, recall, coverage))def rec_one(self,userId):print('推荐一个')rec_movies = self.recommend(userId)# print(rec_movies)return rec_movies# itemCF 推荐算法接口
def recommend(userId):itemCF = ItemBasedCF()itemCF.get_dataset()itemCF.calc_movie_sim()reclist = []recs = itemCF.rec_one(userId)return recs# for movie, rate in recs:#     # print(movie, rate)#     reclist.append(dict(item=movie, rate=rate))# # itemCF.evaluate()# return reclist# 测试
if __name__ == '__main__':print(recommend(1))

这篇关于计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071633

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2