计算机毕业设计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))

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

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

相关文章

clip_en的使用学习

代码分析 import torch import cn_clip.clip as clip from PIL import Image from cn_clip.clip import load_from_name, available_modelsprint("Torch version:", torch.__version__) device "cuda" if torch.cuda.is_available() else "cpu"…

第 10 章 监控系统 | 实战案例 - Nginx 监控

👉 本文目标:为 Nginx 安装 nginx-prometheus-exporter,实现对 Nginx 的监控。 👀 本文内容: 安装 Nginx Prometheus Exporter,暴露 Nginx 指标配置 Prometheus 抓取 Nginx Prometheus Exporter 暴露的指标数据【配置 Recording Rule,便于缓存/加速 Dashboard 频繁访问…

深度学习推理显卡设置

深度学习推理显卡设置 进入NVIDIA控制面板,选择 “管理3D设置”设置 "低延时模式"为 "“超高”"设置 “电源管理模式” 为 “最高性能优先” 使用锁频来获得稳定的推理 法一:命令行操作 以管理员身份打开CMD查看GPU核心可用频率&…

【如何使用python获取excel中sheet页的样式】

如何使用python获取excel中sheet页的样式 要获取Excel中sheet页的样式,特别是单元格的样式,如字体、颜色、边框等,你可以使用openpyxl库,但需要深入一些底层的操作,因为openpyxl的主要API不直接暴露这些样式信息。 以…

云计算 | (四)基本云安全

文章目录 📚基本云安全🐇云安全背景🐇基本术语和概念⭐️风险(risk)⭐️安全需求🐇威胁作用者⭐️威胁作用者(threat agent)⭐️匿名攻击者(anonymous attacker)⭐️恶意服务作用者(malicious service agent)⭐️授信的攻击者(trusted attacker)⭐️恶意的内部人员(mal…

Web自动化测试框架(基础篇)--Selenium WebDriver工作原理和环境搭建

文章目录 引言一、Selenium WebDriver简介二、Selenium WebDriver工作原理2.1 架构概述2.2 通信机制2.3 支持的浏览器 三、环境搭建3.1 安装Python3.2 安装pip3.3 安装Selenium3.4 下载WebDriver 四、编写第一个测试脚本4.1 导入Selenium库4.2 启动WebDriver4.3 打开网页4.4 执…

有趣且重要的JS知识合集(22)树相关的算法

0、举例&#xff1a;树形结构原始数据 1、序列化树形结构 /*** 平铺序列化树形结构* param tree 树形结构* param result 转化后一维数组* returns Array<TreeNode>*/ export function flattenTree(tree, result []) {if (tree.length 0) {return result}for (const …

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边

今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景&#xff1a; 业务需要将一个pdf文件展示在前端显示&#xff0c;但是基于各种原因&#xff0c;放弃了h5使用插件展示 原因有多个&#xff0c;文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…

CSDN 自动上传图片并优化Markdown的图片显示

文章目录 完整代码一、上传资源二、替换 MD 中的引用文件为在线链接参考 完整代码 完整代码由两个文件组成&#xff0c;upload.py 和 main.py&#xff0c;放在同一目录下运行 main.py 就好&#xff01; # upload.py import requests class UploadPic: def __init__(self, c…

力扣每日一题 6/17 枚举+双指针

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 522.最长特殊序列II【中等】 题目&#xff1a; 给定字符串列表 strs &…

【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试

使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者&#xff0c;分享是Linux的优良美德。写的不好请大佬不要喷&#xff0c;多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-tools…

Stable Diffusion文生图模型训练入门实战(完整代码)

Stable Diffusion 1.5&#xff08;SD1.5&#xff09;是由Stability AI在2022年8月22日开源的文生图模型&#xff0c;是SD最经典也是社区最活跃的模型之一。 以SD1.5作为预训练模型&#xff0c;在火影忍者数据集上微调一个火影风格的文生图模型&#xff08;非Lora方式&#xff…

Python | Leetcode Python题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution:def findPeakElement(self, nums: List[int]) -> int:n len(nums)# 辅助函数&#xff0c;输入下标 i&#xff0c;返回 nums[i] 的值# 方便处理 nums[-1] 以及 nums[n] 的边界情况def get(i: int) -> int:if i -1 or…

数实融合创新发展 隆道分享企业级AI应用

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着各行各业&#xff0c;重塑企业的运营管理模式和创新发展路径。6月14日&#xff0c;数实融合全国行&#xff08;潍坊站&#xff09;暨 AI 企业级应用专题会在山东潍坊成功召开。…

STM32单片机DMA存储器详解

文章目录 1. DMA概述 2. 存储器映像 3. DMA框架图 4. DMA请求 5. 数据宽度与对齐 6. DMA数据转运 7. ADC扫描模式和DMA 8. 代码示例 1. DMA概述 DMA&#xff08;Direct Memory Access&#xff09;可以直接访问STM32内部的存储器&#xff0c;DMA是一种技术&#xff0c;…

【随性】学习感想

这几天的作息时间&#xff1a;13:00-23:00&#xff0c;稍显疲惫。为了继续调整作战&#xff0c;明天改变生物钟&#xff0c;尝试新作息时间&#xff1a;9:00-20:00&#xff01;最近已经学完了C与QT&#xff0c;又重回Linux的怀抱&#xff0c;以下为适应Linux下C编程的代码&…

【 ARMv8/ARMv9 硬件加速系列 3.5.1 -- SVE 谓词寄存器有多少位?】

文章目录 SVE 谓词寄存器(predicate registers)简介SVE 谓词寄存器的位数SVE 谓词寄存器对向量寄存器的控制SVE 谓词寄存器位数计算SVE 谓词寄存器小结SVE 谓词寄存器(predicate registers)简介 ARMv9的Scalable Vector Extension (SVE) 引入了谓词寄存器(Predicate Register…

打造工业操作系统开源开放体系

我国制造业具有细分行业、领域众多&#xff0c;产品丰富&#xff0c;制造模式多样等特点&#xff0c;围绕以工业操作系统为核心的工业软件赋能体系建设&#xff0c;离不开平台运营商、工业软件开发商、系统服务商、科研机构、工业企业等多方联合参与。聚众同行、聚力创新&#…

【数据库系统概论复习】关系数据库与关系代数笔记

文章目录 基本概念数据库基本概念关系数据结构完整性约束 关系代数关系代数练习课堂练习 语法树 基本概念 数据库基本概念 DB 数据库&#xff0c; 为了存用户的各种数据&#xff0c;我们要建很多关系&#xff08;二维表&#xff09;&#xff0c;所以把相关的关系&#xff08;二…

创建型模式--抽象工厂模式

产品族创建–抽象工厂模式 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题。 但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,可以考虑将一些相关的产品组成一个“产品族”,…