当前位置: 首页 > news >正文

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

数据概览与特征说明

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

核心特征分类

  • 基础指标popularity(0-100 分)、explicit(布尔值)、音频特征(danceabilityenergyloudness 等)。
  • 流派相关 :原始流派 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 (流派) → 分类任务的标签

  • danceabilityenergyloudness 等音频特征 → 作为输入特征

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

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'])

接着,我们将原本分离的调式特征 keymode 合并成新的单一变量 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),这是一个典型的回归问题。

实现思路
选取与流行度高度相关的特征,如 danceabilityenergyloudnesstempoenergy_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))

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

聚类任务(情绪分组)

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

实现思路
利用 danceabilityenergyvalence 等情绪相关特征,应用 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获取数据

http://www.wxhsa.cn/company.asp?id=4685

相关文章:

  • abc423
  • AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡
  • 最新药物数据集下载:来自Drugs
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发
  • Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测
  • AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性
  • 200 万份脑部 MRI 扫描 + 放射科报告数据集:DICOM 格式高分辨率影像,覆盖 50+ 脑部病理(脑肿瘤、神经退行性疾病、多发性硬化症等),支持 AI 病理识别 _ 分类 _ 分割
  • 30万份行业报告数据集:覆盖金融科技医疗能源等20+行业领域,2010-2024年完整时间跨度,提供高质量PDF和文本格式,支持深度学习模型训练、行业趋势分析、市场竞争研究、学术论文写作的多场景应用
  • 23,463张无人机和卫星图像高质量标注,覆盖20个类别包括港口船舶车辆飞机,支持YOLO和VOC格式,专为深度学习目标检测算法优化,训练集验证集均衡划分提升模型鲁棒性,填补小目标检测数据空白
  • 阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆
  • 多多报销小程序系统详解
  • 第0章 矿卡EBAZ4203爆改zynq开发板介绍和VIVADO的安装
  • 德创恋爱话术宝典介绍
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测协议
  • 机器学习回顾(二)——KNN算法 - 教程
  • 利用langchain创建信息检索链对话应用
  • 不同的.cs文件的命名空间相同
  • MyEMS:开源的力量,如何为企业能源管理带来颠覆性变革?
  • http
  • AI招聘机器人制造商Paradox.ai因弱密码泄露数百万求职者数据
  • 完整教程:【Leetcode hot 100】543.二叉树的直径
  • Thundbird无法获取自签证书。
  • Gitee推出SBOM扫描功能:为开源供应链安全构筑数字防火墙
  • mysql连表查询,轻松掌握多表数据关联技巧
  • Milvus集群部署
  • Qt-捕获摄像头画面
  • 选择MyEMS的十大核心优势:为您的企业开启智慧能管新纪元