尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Spotify 音乐ML练习数据集含158 个特征,11

Spotify 音乐ML练习数据集含158 个特征,11
📅 发布时间:2026/6/19 20:37:46

数据概览与特征说明

本 Spotify ML 练习数据集专为机器学习初学者设计,旨在提供端到端的 ML 管道实践资源。原始数据含 24 个特征,经处理后扩展至 158 个工程特征,涵盖 11.4 万 + 首 Spotify 歌曲信息。
,涵盖流行度评分、音频特征、流派标签、聚类目标及艺术家统计量。

核心特征分类

  • 基础指标 :popularity(0-100 分)、explicit(布尔值)、音频特征(danceability、energy、loudness 等)。
  • 流派相关 :原始流派 track_genre,114 个 is_genre_ 哑变量,标签编码 track_genre_le。
  • 工程特征 :loudness_intensity(响度强度)、happy_dance(欢快指数)、tempo_vs_genre(速度与流派对比)。
  • 聚类目标 :mood_cluster(情绪聚类)、acoustic_valence_mood_cluster(声学效价聚类)。
  • 统计量 :artist_song_count(歌曲数)、artists_avg_popularity(艺术家平均流行度)。

获取更多数据可以访问 https://dianshudata.com/

数据分析

1. 数据探索

import pandas as pd# 读取数据
df = pd.read_csv('modified-spotify-dataset.csv')# 基本信息
print(f"记录数:{df.shape[0]},特征数:{df.shape[1]}")
df.info()# 样例数据
df[['popularity', 'danceability', 'energy', 'track_genre']].head()

我们重点查看:

  • popularity (0~100,歌曲流行度) → 回归任务的潜在目标变量

  • track_genre (流派) → 分类任务的标签

  • danceability 、 energy 、 loudness 等音频特征 → 作为输入特征

在探索阶段,我们还可以做一些可视化,了解特征分布和相关性:

import matplotlib.pyplot as plt
import seaborn as snssns.histplot(df['popularity'], bins=20, kde=True)
plt.title('歌曲流行度分布')
plt.show()corr = df[['popularity', 'danceability', 'energy', 'loudness']].corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('特征相关性')
plt.show()

2. 数据处理与工程化

在正式建模之前,需要对原始的 Spotify 数据集进行多轮优化和特征工程处理,确保它既适合初学者上手(提供的数据集已经是处理后的结果),也能支持更深入的分析与建模。首先,需要删除冗余的标识信息,例如歌曲名与专辑名,这些特征虽然在人类感知上有意义,但在机器学习任务中往往属于高基数无序文本,对模型贡献有限,还可能引入噪声。

df = df.drop(columns=['track_name', 'album_name'])

接着,我们将原本分离的调式特征 key 与 mode 合并成新的单一变量 key_mode,这样既减少了维度,又保留了音乐调性的重要信息,方便模型直接利用。

df['key_mode'] = df['key'].astype(str) + '_' + df['mode'].astype(str)
df = df.drop(columns=['key', 'mode'])

对于流派信息,我们采用了两种编码方式:一是将 track_genre 转换为 114 个 one-hot 编码的 is_genre_* 特征,以便处理多分类任务;二是使用标签编码 (track_genre_le) 生成一个整数型流派标签,更适合树模型或嵌入向量训练。

from sklearn.preprocessing import LabelEncoder# 标签编码
df['track_genre_le'] = LabelEncoder().fit_transform(df['track_genre'])# One-hot 编码
df = pd.get_dummies(df, columns=['track_genre'], prefix='is_genre')

为了进一步增强特征表达能力,我们还构造了一系列复合特征。例如,通过计算 energy/danceability 得到“能量-可舞性比率”,用于衡量歌曲在动感与力量上的平衡;利用主成分分析提取的 mood_pca 则将多个情绪相关特征压缩为一个综合指标,既降低了维度,又保留了主要情绪信息。这些处理步骤显著提升了数据集在回归、分类和聚类等多种任务中的适用性。

df['energy_dance_ratio'] = df['energy'] / (df['danceability'] + 1e-5)

最终处理后的数据集包含 158 个特征,覆盖原始音频特征、流派标签、统计指标、自定义情绪特征等。

3.典型任务与实现方法

回归任务(预测流行度)

任务目标 :利用音频特征和工程化指标预测歌曲的流行度(popularity),这是一个典型的回归问题。

实现思路 :
选取与流行度高度相关的特征,如 danceability、energy、loudness、tempo、energy_dance_ratio 等,使用随机森林回归器(RandomForestRegressor)或者梯度提升树(XGBoost、LightGBM)进行建模。通过 R² 和 RMSE 等指标评估预测效果。

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score, mean_squared_error# 训练和测试数据已在前面准备好
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)y_pred = model.predict(X_test)print(f"R²: {r2_score(y_test, y_pred):.4f}")
print(f"RMSE: {mean_squared_error(y_test, y_pred, squared=False):.4f}")

分类任务 (流派预测)

任务目标 :预测歌曲所属流派(track_genre_le),这是一个多分类问题,类别数量较多(114 个)。

实现思路 :
使用音频特征作为输入,流派标签作为输出。由于类别多且分布不均,可以尝试随机森林、逻辑回归、支持向量机(SVM)等模型,并使用宏平均 F1 分数(macro F1)作为评价指标。

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_reportclf = LogisticRegression(max_iter=1000)
clf.fit(X_train, y_train)y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred))

注意 :由于流派类别众多且不平衡,模型训练时可以考虑类别权重调整或过采样技术。

聚类任务(情绪分组)

任务目标 :基于音频特征对歌曲进行无监督聚类,识别情绪相近的歌曲组。

实现思路 :
利用 danceability、energy、valence 等情绪相关特征,应用 K-means 或层次聚类方法,将歌曲划分为若干情绪类别。通过与数据集自带的 mood_cluster 标签对比,评估聚类效果。

from sklearn.cluster import KMeansfeatures = df[['danceability', 'energy', 'valence']]
kmeans = KMeans(n_clusters=5, random_state=42)
df['kmeans_cluster'] = kmeans.fit_predict(features)# 查看聚类标签与情绪标签的对比
print(df[['mood_cluster', 'kmeans_cluster']].head(10))

总结

以上任务覆盖了回归、分类和聚类三大机器学习范式,结合 Spotify 数据集丰富的特征和多样标签,能够帮助初学者全方位提升实战技能。大家可以根据需求,灵活调整特征选择和模型配置,深入挖掘音乐数据背后的规律。

可在https://dianshudata.com/dataDetail/13329获取数据

相关新闻

  • 最新药物数据集下载:来自Drugs
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性

最新新闻

  • 搬家跨省电动车怎么托运?2026物流平台价格对比 - 快递物流资讯
  • 车路协同技术深度研究:从技术原理到产业落地的系统解构
  • 【claude】执行claude命令报错:‘claude‘ is not recognized as an internal or external command, operable program
  • 小米手表表盘设计终极指南:三步完成个性化表盘定制
  • 河南开封市青少年戒网瘾学校汇总一览:专治沉迷网络/厌学逃学/叛逆不听话! - 辛云教育资讯
  • 游玩婺女洲顺路吃饭 婺源这家肥肠鱼干净又入味 - 速递信息

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号