歌曲分类和流行度预测
1. 项目介绍
本项目从kaggle平台上下载了数据集,该数据集包含了3万多首来自Spotify API 的歌曲,共有23个特征。首先对数据集进行预处理,如重复行、缺失值、标准化处理等。再对预处理后的数据进行探索性分析,观察各变量的分布情况,各变量之间是否存在关系,如线性关系、相关性等。然后根据探索分析的结果,进行歌曲分类和流行度预测。歌曲分类依次用了决策树分类器、随机森林分类器、xgboost分类器进行分类,再根据结果比较分析了哪个分类器效果好。歌曲流行度预测选用随机森林回归器和梯度提升回归器对歌曲流行度进行预测,使用sklearn中的Grid Search方法进行最佳超参数组合的搜索,得到最佳模型。最后分析在最佳模型中,各个特征的贡献率。
2. 数据介绍
该数据集共有32833首歌曲的相关数据信息,共有23个特征,具体如表1。
表格 1 变量特征
变量名 | 类型 | 含义 | 变量名 | 类型 | 含义 |
track_id | object | 歌曲id | track_name | object | 歌曲名称 |
track_artist | object | 歌曲家 | track_popularity | int64 | 歌曲人气 |
track_album_id | object | 专辑id | track_album _name | object | 专辑名称 |
track_album _release_data | object | 专辑发行日期 | playlist_name | object | 播放列表名称 |
playlist_id | object | 播放列表id | playlist_genre | object | 播放列表类型 |
playlist_subgenre | object | 播放列表子流派 | danceability | float64 | 可舞性 |
energy | float64 | 强度和活动的感知量度 | key | int64 | 音阶 |
loudness | float64 | 响度 | mode | int64 | 曲目的模态 |
speechiness | float64 | 语音类型 | acousticness | float64 | 声学 |
instrumentalness | float64 | 是否为纯音乐 | liveness | float64 | 是否现场 |
valence | float64 | 是否积极 | tempo | float64 | 平均节奏时间 |
duration_ms | int64 | 曲目时间 |
共有10个object类型的变量,9个float型变量,4个int型变量。查看该数据集前5行数据,如图1、图2。
图 1数据集前5行数据
图 2 数据集前5行数据
3. 数据预处理方法
先导入该数据集,再进行相应的数据预处理,然后进行探索性数据分析
3.1 数据预处理
数据预处理的作用是对原始数据进行清洗、转换和集成,以便于后续的数据分析和建模工作。数据清洗,可以去除数据中的噪声、异常值和缺失值,以提高数据的质量和准确性。数据标准化,对数据进行标准化处理,以消除不同特征之间的量纲差异,提高数据的可比性和可解释性。通过数据预处理,可以提高数据的质量和准确性,减少数据分析和建模过程中的误差和偏差,从而提高数据分析和建模的效果和准确性。
经过查看数据集的前5行,发现只需要处理该数据集是否有重复行、重复值、缺失值,无需进行数据降维、数据转换等。
3.1.1 处理重复行
首先查看数据集中是否存在重复行,重复行数据增加了数据的冗余,属于无效数据,应该将其删除。使用代码“df.duplicated().sum()”查看,结果如图3。
图 3 重复行结果
发现该数据集并没有重复行,因此无需进行多余的处理。
3.1.2 处理缺失值
缺失值会导致数据不完整,处理缺失值可以提高数据质量;缺失值可能会导致数据分布的偏移,处理缺失值可以减少这种偏差,使数据更符合真实情况;缺失值会影响模型的训练和预测结果,处理缺失值可以提高模型的性能和准确度;处理缺失值可以通过插补或预测的方式填充缺失值,从而保留数据中的重要信息,避免丢失有价值的数据。处理缺失值时,可以采用直接删除缺失值、插补缺失值、使用回归模型预测缺失值、使用聚类方法填充缺失值等方法。
在本项目中先使用代码“df.isnull().sum()”,检查该数据集是否有缺失值,结果如图4。
图 4 缺失值结果
发现变量“track_name”、“track_artist”、“track_album_name”,均有5个缺失值,使用插补法进行填充缺失值,将缺失值都填充为N/A。结果如图5
图 5 缺失值填充后结果
缺失值插补完成,数据集中已无缺失值。
3.2 数据探索性分析
虽然数据集已经处理完成了,但是并不清楚各变量的分布情况,及相互之间的关系,先进行一些探索性分析,为后续的分析、建模奠定基础。
首先查看变量“playlist_genre”的分布情况,即播放列表中各流派的占比情况,如图6。
图 6 播放列表中各流派占比饼状图
从饼状图结果来看,在播放列表中的各流派的占比情况相差不大,较为均匀。
接着分析在播放列表中的各流派的的人气情况,如图7、图8。
图 7 各流派人气情况
图 8 各流派人气分布条形图
从结果来看,各流派的人气中位数相差不大,其中最受欢迎的是latin流派,相对不受欢迎的是edm流派;其中rock、r&b、pop受欢迎的范围相对于其他三个流派较广。
再分析变量'energy'、'danceability'、'valence'在不同的音乐流派中是否有关联、区别,可以帮助我们发现数据中的模式、离群值和异常值,分析结果如图9。
图 9 各流派在不同特征上的关系图
从结果上可以得出,edm流派的曲目的活力最强,让人听了精力充沛;这6种流派的音乐,可舞性较好,都比较适合作为跳舞的背景音乐;edm流派的曲目偏消极一点,其他5种流派的大多数曲目偏中性,少部分既有消极的又有积极的。edm流派的律动性最好。
其次分析数值型变量,分别统计各个变量不同取值的个数,然后绘制图形观察其分布状况,如是否存在有明显的线性关系。其分析结果如图10。
图 10 数值型变量的线性图
从运行结果来看,这些数值型变量都不存在一元线性关系,但变量danceability、energy、valence、duration存在比较明显的正态分布。如变量danceability其值主要分布在0.6-0.8,表明该数据集中的曲目,大多都具有可舞性,可舞性是根据音乐元素的组合,如节奏、节奏稳定性、节拍强度和整体规律性等,来描述曲目适合跳舞的程度,即表明大多数曲目节奏、律动较好。
再用小提琴图来分析不同音乐流派的能量(Energy)的分布情况,得到的结果如图11。
图 11 不同音乐流派的energy分布小提琴图
从结果来看,pop摇滚乐和edm电舞曲往往更有活力,r&b歌曲通常是最没有活力的,这也验证了上面的结论edm流派的音乐的可舞性是最强的。
分析不同年份专辑的发行量情况,用条形图来展示,如图12。
从结果来看,2013-2019年专辑的发行量,不断增加,并且在2019年激增,约为2018年的专辑发行量的3倍,但在2020年又显著下降,猜测2019年可能发生了促进专辑发行的大事件。
然后分析各变量随年份的变化趋势,如图12。
图 12各变量随时间的变化趋势
从结果来看,随着时间的移动,该数据集中整体的声学在下降,特别是在1980年后,波动较为平缓;曲目的整体可舞性在上升,音乐的律动性越来越强;歌曲是否为现场的音频整体变化不大;歌曲中含有口语的占比在1970-2000年显著增加,整体的波动较大。
然后绘制散点图,来观察不同变量之间两两之间的关系,结果如图13。
图 13 散点图
从结果来看,发现各特征两两之间并无明显线性关系,所以在后续的类别和流行度预测的模型中无需剔除变量。
最后绘制各特征之间的热力图,如图14所示。
图 14 各特征之间热力图
发现除了loudness与energy,acousticness与energy之间有较强的相关性后,其他变量两两之间均无明显的相关性。因此在后续的建模中,应该考虑loudness与energy,acousticness与energy之间的相关性。弱相关性表明,预测曲目受欢迎程度可能受到当前数据集范围之外的因素组合的影响。由于 track_populariy 和 duration_ms 之间的相关性为 -0.14,因此较长的歌曲与平均略低的曲目受欢迎程度相关的趋势较弱。然而,这种关系并不牢固,其他因素可能会影响整体情况。
看起来track_popularity与给定的任何功能都没有很强的相关性。
随着歌曲响度的增加,歌曲的能量也可能会增加。相反,如果响度降低,能量更有可能降低。由于 track_populariy 和 duration_ms 之间的相关性为 -0.14,因此较长的歌曲与平均略低的曲目受欢迎程度相关的趋势较弱。然而,这种关系并不牢固,其他因素可能会影响整体情况。基于-0.15的相关系数,器乐性较高的歌曲与平均曲目受欢迎程度略低的趋势较弱。但是,这种关系并不牢固,其他因素可能会在决定曲目受欢迎程度方面发挥作用。
4. 构建模型方法
基于前面的探索性分析,我们对该数据集进行歌曲流派的分类和歌曲流行度的预测。
4.1 歌曲流派分类
歌曲流派分类我们分别采用决策树分类器、随机森林分类器、xgboost分类器三种机器学习方法进行分类。
4.1.1 决策树分类器
决策树分类器是一种基于树结构的机器学习算法,用于解决分类问题。它通过对数据集进行递归分割,构建一个树形结构的分类模型。
(1)原理:
(a)决策树的根节点表示整个数据集,每个内部节点表示一个特征,每个叶节点表示一个类别。
(b)决策树的构建过程是一个递归的过程,每次选择一个最优的特征进行分割,使得分割后的子集中的样本尽可能属于同一类别。
(c)决策树的构建过程会根据特征的不同取值进行分割,直到满足停止条件,例如达到最大深度、样本数量小于阈值等。
(2)实现步骤:
(a)选择一个合适的特征选择度量指标,例如信息增益、信息增益比、基尼指数等。
(b)根据特征选择度量指标,选择最优的特征进行分割。
(c)根据选择的特征的不同取值,将数据集分割成多个子集。
(d)对每个子集递归地重复步骤2和步骤3,直到满足停止条件。
(e)构建完整的决策树后,可以使用决策树进行分类预测。
决策树分类器的优点包括易于理解和解释、能够处理离散和连续特征、能够处理多类别问题等。然而,决策树分类器也存在一些缺点,例如容易过拟合、对输入数据的变化敏感等。因此,在实际应用中,可以通过剪枝、集成学习等方法来改进决策树分类器的性能。
从前面分析来看,先将该数据集中的数值型变量全部加入到特征工程中,再选出最优特征,然后将数据集按照二八比例分为测试集和训练集,最后进行调参训练模型,得到结果如图15。
图 15决策树分类器结果
使用该方法得到的结果并不好,准确度约为0.47。
4.1.2 随机森林分类器
随机森林是一种集成学习方法,它通过组合多个决策树来进行分类或回归。
(1)原理:
(a)随机森林由多个决策树组成,每个决策树都是独立训练的。
(b)每个决策树的训练集是通过有放回抽样(bootstrap)从原始训练集中抽取的。
(c)在每个节点上,决策树选择最佳的特征来进行分割,分割依据可以是信息增益、基尼系数等。
(d)每个决策树的分割过程会一直进行,直到达到预定的停止条件,例如达到最大深度或节点中的样本数小于某个阈值。
(e)预测时,随机森林中的每个决策树都会进行预测,最终的预测结果是通过投票或取平均值来确定的。
(2)实现步骤:
(a)准备训练集和测试集。
(b)根据需要设置随机森林的参数,例如决策树的数量、最大深度等。
(c)对于每个决策树:①从训练集中有放回地抽取样本,构建决策树。②在每个节点上选择最佳的特征进行分割。③重复步骤①和②,直到达到停止条件。
(d)对于每个测试样本,通过投票或取平均值来确定最终的预测结果。
(e)计算预测结果的准确率或其他评估指标。
4.1.3 xgboost分类器
xgboost(eXtreme Gradient Boosting)是一种基于梯度提升树的机器学习算法,它在许多数据科学竞赛中表现出色。XGBoost结合了梯度提升树和正则化技术,具有高效性和准确性。
(1)原理如下: (a)初始化模型:将所有样本的预测值初始化为一个常数,通常为样本标签的均值。(b)计算损失函数的梯度和二阶导数:根据当前模型的预测值和样本标签,计算损失函数的一阶导数(梯度)和二阶导数。(c)选择最佳分割点:对每个特征,根据样本的梯度和二阶导数,选择最佳的分割点,将样本划分为左右两个子节点。(d)计算叶子节点权重:根据样本的梯度和二阶导数,计算每个叶子节点的权重。(e)更新模型:根据叶子节点权重,更新模型的预测值。(f)迭代步骤2-5,直到达到指定的迭代次数或损失函数的收敛条件。
(2)实现步骤如下:(a)准备数据:将数据集划分为训练集和测试集,并进行特征工程,如缺失值填充、特征选择、特征缩放等。(b)初始化模型参数:设置树的最大深度、学习率、正则化参数等。(c)训练模型:使用训练集数据训练XGBoost分类器,通过迭代优化模型参数,使损失函数最小化。(d)预测结果:使用训练好的模型对测试集数据进行预测,得到分类结果。(e)评估模型:根据预测结果和真实标签,计算模型的准确率、精确率、召回率等指标,评估模型的性能。(f)调参优化:根据模型评估结果,调整模型参数,如增加树的数量、调整学习率、正则化参数等,以提高模型的性能。
通过不断迭代优化模型参数,XGBoost能够有效地处理高维稀疏数据,并在许多机器学习任务中取得优秀的性能。
4.2 歌曲流行度预测
选用随机森林回归器和梯度提升回归器对歌曲流行度进行预测,使用sklearn中的Grid Search方法进行最佳超参数组合的搜索。同时根据预测值和真实值之间的平均绝对误差MAE来选择出最佳模型。得到最佳梯度提升模型后,再根据此模型获取个特征在此模型中的贡献,并绘图直观展示,观察各特征对歌曲流行度的影响程度。
5. 研究结果及分析
5.1 歌曲流派分类
5.1.1 决策树分类器
用决策树分类器对该数据集进行分类,得到结果如图16。
图 16决策树分类器结果
从结果来看,使用该方法得到的结果并不好,准确度约为0.47。可能是在特征工程中未考虑到loudness与energy,acousticness与energy之间有一定的相关性。
5.1.2 随机森林分类器
对该歌曲数据集用随机森林方法进行分类,先创建一个Random Forest分类器的实例,再通过设置n_estimators参数为300来指定使用300个决策树进行集成学习,并设置random_state参数为42以确保结果的可重复性。然后使用fit方法将分类器与训练数据进行拟合,使用predict方法对测试数据进行预测,将预测结果保存在y_pred_rf变量中,最后使用metrics.accuracy_score方法计算分类器的准确率。运行结果如图17。
图 17随机森林分类器结果
该方法的准确效率约为0.87,相较于之前的决策树分类器的分类准确率明显提高。
5.1.3 xgboost分类器
先定义xgboost模型的超参数,网格搜索(grid search)调优 XGBoost 模型的超参数,进行训练获得最佳超参数和最佳模型,然后进行预测,并计算出其准确率,得到结果如图18。
图 18 xgboost分类器结果
从结果来看,该分类器最大深度为6,树为200,,准确率已经约为0.92,其分类效果是这三种分类方法中,最好的。
5.2 歌曲流行度预测
用该数据集进行流行度预测,得到的结果如图19,在该模型中各特征的贡献情况如图19。
图 19 流行度预测结果
图 20 预测模型中各特征贡献率
该预测模型的最低平均绝对误差约为16,效果还是比较好。在该预测模型中,音轨时间、速度和音量是歌曲流行度预测中贡献率前三,表明这三个特征变量是流行度预测中最重要的影响因素。
完整的数据集和源代码:
https://download.csdn.net/download/qq_62974479/90439692
相关文章:
歌曲分类和流行度预测
1. 项目介绍 本项目从kaggle平台上下载了数据集,该数据集包含了3万多首来自Spotify API 的歌曲,共有23个特征。首先对数据集进行预处理,如重复行、缺失值、标准化处理等。再对预处理后的数据进行探索性分析,观察各变量的分布情况&…...
经验分享:用一张表解决并发冲突!数据库事务锁的核心实现逻辑
背景 对于一些内部使用的管理系统来说,可能没有引入Redis,又想基于现有的基础设施处理并发问题,而数据库是每个应用都避不开的基础设施之一,因此分享个我曾经维护过的一个系统中,使用数据库表来实现事务锁的方式。 之…...
oracle decode
1. 基本语法 DECODE(expression, search1, result1, search2, result2, ..., default_result) expression :需要比较的表达式或列。search1, search2, ... :要匹配的值。result1, result2, ... :当 expression 等于 search 时返回的结果。def…...
让后台界面布局更灵活:在GrapesJS中复刻Java的五区式布局
当你想要在可视化编辑器中做一个类似Java BorderLayout 的五区布局,却发现市面上大多只能“简单拼接”而难以自由扩展时,你或许就需要一个更灵活的布局管理器来帮忙。本篇文章就从这个痛点开始,带你一步步揭秘如何用 GrapesJS 自定义并实现一…...
【网络安全 | 漏洞挖掘】分享21个基础漏洞案例
未经许可,不得转载。 文章目录 案例1:绕过500状态码案例2:修改前端实现任意文件上传案例3:Nmap扫描端口命令案例4:绕过限制实现任意文件读取案例5:删除任意目录文件案例6:锁定任意账户案例7:重置任意用户密码案例8:接管任意账户方法一方法二案例9:功能校验机制绕过案…...
期权适合什么类型的投资者交易?
财顺小编本文主要介绍期权适合什么类型的投资者交易?期权适合的投资者类型需结合其风险偏好、投资目标及市场判断能力综合评估。 期权适合什么类型的投资者交易? 1. 风险管理型投资者(稳健型) 适用场景:持有股票、大…...
浅谈C++/C命名冲突
前言 在这里我会简要地介绍产生命名冲突的原因,和C中处理命名冲突的方法,同时和C语言的解决办法进行比较。 相信你在阅读完之后一定会有收获。对于我们来说,了解编译器的编译链接过程才能更好的理解编译器是如何报错的,更能让我们…...
【星云 Orbit • STM32F4】08. 用判断数据头来接收据的串口通用程序框架
【星云 Orbit • STM32F4】08. 用判断数据头来接收据的串口通用程序框架 1. 引言 本教程旨在帮助嵌入式开发小白从零开始,学习如何在STM32F407微控制器上实现一个基于串口的数据接收程序。该程序能够通过判断数据头来接收一串数据,并将其存储到缓冲区中…...
C# OnnxRuntime部署DAMO-YOLO香烟检测
目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name:input tensor:Floa…...
探索Elasticsearch:索引的CRUD
在企业环境中,Elasticsearch的索引CRUD(创建Create、读取Read、更新Update、删除Delete)操作是非常基础且频繁使用的功能。这些操作对于管理和维护数据至关重要,尤其是在处理大规模数据集和需要实时搜索与分析的应用场景中。 目录…...
C++:多态与虚函数
1.虚函数,在函数前加virtual即可。有虚函数时,父类指针指向父类对象时就会使用父类的成员,指向子类对象时就可以使用子类成员,进而我们引入了多态的概念。 2.多态:父类指针指向子类的对象,通过父类指针调用…...
【Python 数据结构 2.时间复杂度和空间复杂度】
Life is a journey —— 25.2.28 一、引例:穷举法 1.单层循环 所谓穷举法,就是我们通常所说的枚举,就是把所有情况都遍历了的意思。 例:给定n(n ≤ 1000)个元素ai,求其中奇数有多少个 判断一…...
【Qt QML】QML鼠标事件(MouseArea)
QML鼠标事件全面解析 一、MouseArea基础概念 在 QML 中,鼠标事件是处理用户与界面元素交互的重要部分。QML 提供了多种方式来处理鼠标事件,MouseArea 是 QML 中用于处理鼠标事件的核心元素,它可以覆盖在其他元素之上,捕获鼠标操作并触发相应的信号。 1、基本用法 import …...
医脉云枢:中医药典籍知识图谱与非遗传承多维可视化系统
核心优势: "医脉"直击主题,"云枢"体现技术前瞻性 "非遗传承"呼应二十大文化政策 "多维"涵盖3D模型、时间轴、地图等多种可视化形式 技术栈:Vue Flask Element UI ECharts MySQL 同时参考了…...
vue 和 react 底层采用的 diff 算法的区别
Vue 3 和 React 在底层 Diff 算法上的实现确实有一些区别,主要体现在设计理念、性能优化策略以及具体实现方式上。以下是对两者 Diff 算法差异的详细分析: 1. 总体设计理念 Vue 3 的 Diff 算法 Vue 3 的虚拟 DOM Diff 算法基于“双端比较”思想ÿ…...
养老小程序方案详解居家养老小程序系统
养老小程序,上门居家养老小程序,用户端护工端小程序,管理后台。php开发语言,可源码搭建,二次开发或者定制开发。 一 用户端:小程序 核心功能模块:用户完善个人健康档案,在线选择服…...
Tauri跨平台开发问题及解决方案深度解析(React版)
Tauri跨平台开发问题及解决方案深度解析(React版) 一、环境配置与项目初始化难题(React适配) 1.1 React项目初始化 推荐模板: # 使用ReactTypeScript模板 npm create tauri-applatest -- --template react-ts# 项目…...
【OMCI实践】omci.lua脚本文件(独家分享)
引言 omci.lua文件是Wireshark的OMCI协议解析插件的核心组件。它配合BinDecHex.lua,可以解析OMCI协议的数据包,提取出消息类型、受管实体标识、受管实体属性等关键信息,并以人类可读的形式显示在Wireshark的解码视图中,方便研发人…...
React高级内容探索
flushSync确保了DOM立即更新 flushSync让你强制React同步刷新提供回调中的任何更新,这确保了DOM立即更新 flushSync是DOM更新之后的,像vue中的nextTick: import { useState,useRef} from "react" import { flushSync} from &quo…...
前端水印实现方式
一、简介 简单来说,前端水印就是在网页或应用程序的前端界面上添加的一种标记,通常是文本、图标或图案等形式。它就像给你的数字内容贴上了一个独特的 “标签”,用于标识内容的归属、防止未经授权的使用和传播。比如,一些在线图片…...
【新手入门】SQL注入之getshell(木马)
木马介绍 木马其实就是一段程序,这个程序运行到目标主机上时,主要可以对目标进行远程控制、盗取信息等功能,一般不会破坏目标主机,当然,这也看黑客是否想要搞破坏。 按照功能分类:远控型、破坏型、流氓软件型、盗取信…...
Git操作指南:分支合并、回退及其他重要操作
在软件开发的协作过程中,Git 作为一款强大的版本控制系统,能帮助开发者高效管理代码的各个版本和分支。本文将详细介绍 Git 中常见的分支合并、取消本地修改、回退操作等,并提供通俗易懂的解释和步骤指南。 一、分支合并 分支合并是 Git 工…...
Vue 3 引入全局状态管理 pinia
什么是全局状态管理? 所有页面全局共享的变量,而不是局限在某一个页面中。适合作为全局状态的数据: 已登录用户信息 (每个页面几乎都要用) Pinia 是一个主流的状态管理库,相比于 Vuex 来说使用更简单,可参考 入门文档 开始 | Pinia 进行引…...
SQL 中为什么参数多了not in 比 in 慢多了,怎么优化
开发工作中,我发现一个现象,比喻下面的两个语句: select * from shangpin where spdm in (1,2,3,...); select * from shangpin where spdm not in (1,2,3,...); 当参数比较少的时候还看不出来什么,但是遇到参数上了几百几千&am…...
[密码学实战]Java生成SM2根证书及用户证书
前言 在国密算法体系中,SM2是基于椭圆曲线密码(ECC)的非对称加密算法,广泛应用于数字证书、签名验签等场景。本文将结合代码实现,详细讲解如何通过Java生成SM2根证书及用户证书,并深入分析其核心原理。 一、证书验证 1.代码运行结果 2.根证书验证 3.用户证书验证 二、…...
API接口:企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南
API接口:企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南 本文详细介绍一种基于 Web 搜索方式实现的企业信息查询接口,适用于数据补全、企业资质验证、信息查询等场景。文章内容涵盖接口功能、请求参数、返…...
版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点
版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点 引言正文引言 必读文章 ------ 版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点。 此处,我们对给定点的坐标进行一下限制,因为是只添加一个点,因…...
医疗行业电脑终端如何防病毒——火绒企业版杀毒软件
医疗物联网技术广泛应用,使得医院网络空间中增加了诸多新型终端设备。这些设备类型多样、型号各异,风险暴露面积大。火绒安全对医疗机构终端安全出现的问题、不足、需求等,提出整体解决方案。 医疗行业终端安全防护痛点 系统老旧 医院、区…...
【入门Web安全之前端学习的侧重点和针对性的建议】
入门Web安全之前端学习的侧重点和针对性的建议 一、HTML:理解攻击载荷的载体二、CSS:次要但需警惕点击劫持三、JavaScript:渗透测试的核心重点四、浏览器工具:渗透测试的实战武器五、学习建议与资源六、总结:渗透测试者…...
2024年中国城市统计年鉴(PDF+excel)
2024年中国城市统计年鉴(PDFexcel) 说明:包括地级县级市 格式:PDFEXCEL 《中国城市统计年鉴》是一部全面反映中国城市发展状况的官方统计出版物,包括各级城市的详细统计数据。这部年鉴自1985年开始出版,…...
详解DeepSeek模型底层原理及和ChatGPT区别点
一、DeepSeek大模型原理 架构基础 DeepSeek基于Transformer架构,Transformer架构主要由编码器和解码器组成,在自然语言处理任务中,通常使用的是Transformer的解码器部分。它的核心是自注意力机制(Self - Attention),这个机制允许模型在处理输入序列时,关注序列中不同位…...
Github 2025-03-03 开源项目周报Top14
根据Github Trendings的统计,本周(2025-03-03统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目4Jupyter Notebook项目3Go项目2JavaScript项目2C++项目2Vue项目1Rust项目1Dify.AI: 开源的LLM应用程序开发平台 创建…...
探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
文章目录 二、关键算法原理剖析2.1 Viterbi 解码2.1.1 卷积码与网格图基础**卷积码****网格图****生成多项式****理想情况下解码过程** 2.1.2 Viterbi 算法核心思想2.1.3 路径度量与状态转移机制2.1.4 算法流程与关键步骤详解2.1.5 译码算法举例与复杂度分析2.1.6 算法代码示例…...
MAC 本地搭建部署 dify(含 github访问超时+Docker镜像源拉取超时解决方案)
目录 一、什么是 dify? 二、安装 docker 1. 什么是 docker? 2. docker下载地址 三、安装 dify 1. dify下载地址 2.可能遇到问题一: github访问超时 3.下载后完成解压 4.进入到 cmd 终端环境,执行下面三个命令 5.可能遇到…...
扫描纸质文件转pdf---少页数+手机+电脑协作
针对手机上扫描软件扫描文件转pdf要收费的问题,提供一种在页数较少时的免费替代方案 。 实现方法:手机软件的免费功能将文件扫描并保存为图片电脑端在word中将图片拼成文档word转pdf 1.借助于“扫描全能王”APP可以免费扫描文件为图片的功能࿰…...
[KEIL]单片机技巧 01
1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义,可以解决90%以上的单纯的片内外设bug,学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步,一定要善于使用这个工具,而不是外设…...
B站上优质的Java和SpringBoot相关视频教程
Java和SpringBoot相关视频教程 Java大师课 【Java】上部:Java Master Class大师课教程【Java】下部:Java Master Class大师课教程 Spring Boot & React 【Spring Boot & React】Spring Boot和React教程 Spring Boot 【Spring Boot】Spring…...
Spring学习笔记04:spring mvc和Spring Boot之间是什么关系?
Spring MVC 是什么? 想象你开了一家餐厅,顾客(用户)点菜、服务员传话、厨师做菜、最后服务员上菜。Spring MVC 就是规定这套流程的“餐厅管理规则”,专门用于处理网页请求(HTTP)和响应。 核心…...
【JavaEE】线程安全
【JavaEE】线程安全 一、引出线程安全二、引发线程安全的原因三、解决线程安全问题3.1 synchronized关键字(解决修改操作不是原子的)3.1.1 synchronized的特性3.1.1 synchronized的使用事例 3.2 volatile 关键字(解决内存可见性) …...
Centos7源码编译安装Sqlite最新版本
下载源码 https://www.sqlite.org/download.html 复制下载链接,然后用 wget 下载 wget https://www.sqlite.org/2025/sqlite-autoconf-3490100.tar.gz 解压缩编译安装 tar -zxf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefi…...
C++(蓝桥杯常考点)
前言:这个是针对于蓝桥杯竞赛常考的C内容,容器这些等下棋期再讲 C 在DEVC中注释和取消注释的方法:ctrl/ ASCII值(常用的): A-Z:65-90 a-z:97-122 0-9:48-57 换行/n:10科学计数法:eg:…...
java后端开发day24--阶段项目(一)
(以下内容全部来自上述课程) GUI:Graphical User Interface 图形用户接口,采取图形化的方式显示操作界面 分为两套体系:AWT包(有兼容问题)和Swing包(常用) 拼图小游戏…...
iterm2更新后主题报错
报错 .oh-my-zsh/themes/agnoster.zsh-theme:307: parse error near <<<。方法1:更新Oh My Zsh主题(以agnoster为例) 适用场景:使用Oh My Zsh自带主题(如agnoster)时出现语法错误。 备份当前主题…...
C++编程:常见内置算法
C中算法主要是由头文件<algorithm><functional><numeric>组成。 <algorithm>是所有STL头文件中最大的一个算法头文件,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等。 <numeric>体积很小,只包括几个在序列上面…...
【开源-开源C++框架boost和poco的对比】
从各个维度对 Boost 和 Poco 进行对比分析 Boost 和 Poco 的对比 1. 核心定位 Boost: 定位: 高性能、通用性、标准化。特点: 提供底层、高度灵活的模块,许多库已被纳入 C 标准。适用场景: 需要高性能、精细控制的场景(如游戏开发、高频交易、科学计算&a…...
【Web安全方向编程语言学习顺序推荐】
Web安全方向编程语言学习顺序推荐 1. HTML/CSS/JavaScript(基础层)2. Python(工具与自动化层)3. SQL(数据库交互层)4. PHP(传统Web漏洞研究层)5. Ruby(红队工具链层&…...
h5 IOS端渐变的兼容问题 渐变实现弧形效果
IOS端使用渐变的时候有兼容问题 以下是问题效果,图中黑色部分期望的效果应该是白色的。但是ios端是下面的样子…… 安卓pc 支持: background-image: radial-gradient(circle 40rpx at 100% 0, #f3630c 40rpx, rgb(255, 255, 255) 50%);安卓pc ios支持…...
【朝夕教育】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
MySQL中的字符串处理函数:concat 函数 一、concat ()函数 1.1、基本语法1.2、示例1.3、特殊用途 二、COALESCE()函数 2.1、基本语法2.2、示例2.3、用途 三、进阶练习 3.1 条件和 SQL 语句3.2、解释 一、concat &…...
doris:Paimon Catalog
使用须知 数据放在 hdfs 时,需要将 core-site.xml,hdfs-site.xml 和 hive-site.xml 放到 FE 和 BE 的 conf 目录下。优先读取 conf 目录下的 hadoop 配置文件,再读取环境变量 HADOOP_CONF_DIR 的相关配置文件。当前适配的 Paimon 版本为 0…...