实验1 音乐流行度预测
任务描述
构建线性回归模型,对音乐流行度进行预测。
数据集简介
人类与歌曲和音乐有着紧密的联系。音乐可以改善情绪,减轻疼痛和焦虑,为情感表达提供机会。研究表明,音乐可以在许多方面有益于我们的身体和心理健康。最近,多项研究已经开展,以了解歌曲和其受欢迎程度之间的关系。本数据集中,歌曲用多种指标度量对进行描述并记录为表格,任务是预测歌曲流行度。数据集包含18835个样本,每个样本包含13个属性与1个实值标记,属性包括连续数据属性和离散属性,属性信息见下表。要注意数据之间存在多重共线性,这增加了任务的挑战难度。
变量名 | 属性/标记 | 连续/离散 | 类型 | 上下界 | 离散值个数 |
Song_name | string | ||||
Song_popularity | Label | Continuous | int | (0,100) | |
Song_duration_ms | Attribute | Continuous | int | (12k,1.8m) | |
acousticness | Attribute | Continuous | double | (0,1) | |
daceability | Attribute | Continuous | double | (0,0.99) | |
energy | Attribute | Continuous | double | (0,1) | |
instrumentalness | Attribute | Continuous | double | (0,1) | |
key | Attribute | Discrete | int | 12 | |
liveness | Attribute | Continuous | double | (0.01,0.99) | |
loudness | Attribute | Continuous | double | (-38.8,1.58) | |
audiomode | Attribute | Discrete | int | 2 | |
speechiness | Attribute | Continuous | double | (0,0.94) | |
tempo | Attribute | Continuous | double | (0,242) | |
timesignature | Attribute | Discrete | int | 6 | |
audiovalence | Attribute | Continuous | double | (0,0.98) |
目标:根据歌曲指标预测歌曲流行度。
教学要求
- 掌握线性回归模型的原理与构建
- 掌握数据集预处理的常用方法,包括属性转换、归一化、共线性(multicollinearity)的检测与处理等。其中关于共线性要求自学,可参考 [1] [2]。
- 掌握常用评估方法(本实验中为最基本的单次留出法)
- 掌握实验结果的展示方式
实验要求
- 使用Python编程构建线性回归算法,预测音乐流行度。
- 数据集预处理:
- 离散属性连续化
- 连续属性归一化normalization
- 共线性的检测与处理
- 使用80%的数据集进行训练,20%的数据集进行测试。需要报告训练误差和测试误差。请注意,需要保证模型能够在测试集上进行准确的预测。
- 使用可视化技术来展示你的模型和数据集。可以使用Python的Matplotlib库来完成该任务。(可选)
- 对数据集的展示,比如,属性值的分布情况、属性与标记之间的相关性等。
- 对模型的展示,比如在二维空间中展示模型对应的线
- 报告模型的性能和准确率。可以使用Python的Scikit-Learn库中的mean_squared_error函数来计算均方误差(MSE)。
- 提交代码与报告,其中报告内容包括以下几个部分:
- 预处理
- 实验设置,包括实验评估方法与性能度量
- 实验结果,包括模型性能,可视化结果展示
- 结果分析
- 代码附录
提交要求
- 提交的文件为压缩文件,其中包含:.py代码文件或者.ipynb(不接受其它后缀的代码文件)、实验报告(doc或.docx),可能包含:模型文件(训练代码和预测代码分开的话需要)、运行脚本(视自己情况而定)
- 提交的报告为doc或docx,代码需要复制后放在附录中。
- 提交的代码需要一键运行,或者命令行(脚本)直接运行。(脚本运行需要注意路径)
- 模型使用pickle库保存。用法参照:
- 不要包含太多库导致批改设备运行时报错(没用到的库尽量不要导入)。
参考文献
[1] | 流病与统计, “一看就懂的多重共线性,” [联机]. Available: https://zhuanlan.zhihu.com/p/355241680 |
[2] | 喀喀湖, “线性回归的决定系数,” [联机]. Available: https://blog.csdn.net/weixin_44005185/article/details/121273629 |