回顾:播放列表的氛围
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 42 课,共 51 课。
挑战
中等你的播放列表中有 98 首歌曲,保存在 songs.csv 中。将它们按情绪分类;图表已设置好。
- 缩放这四个特征,并将歌曲聚为 4 类。
- 根据每个聚类的平均能量和效价命名:两者都不低于 0.5 时命名为
happy,只有能量不低于 0.5 时命名为tense,只有效价不低于 0.5 时命名为calm,两者都低于 0.5 时命名为sad。 - 按数量从多到少,打印每种情绪的歌曲数量和代表歌曲:离该组中心最近的歌曲。
- 以效价为横轴、能量为纵轴绘制散点图,每种情绪绘制一组,并用该情绪的名称标注;添加图例并显示图表。
这是本章第一个播放列表的结果:
happy: 26 songs, anthem Lucky Avenue
tense: 22 songs, anthem Midnight Highway
sad: 17 songs, anthem Grey Bridges
calm: 15 songs, anthem Soft Window以及对应的图表:
然后 Coddy 会描述你的播放列表。
亲手试试
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# 每首歌占一行:能量值和愉悦度(0 表示悲伤,1 表示快乐)的范围都是 0 到 1,另有节奏和原声程度
songs = pd.read_csv("songs.csv")
features = ["energy", "valence", "tempo_bpm", "acousticness"]
fig, ax = plt.subplots()
ax.set_title("Playlist Moods")
ax.set_xlabel("Valence (sad to happy)")
ax.set_ylabel("Energy")
# 在下方编写你的代码
无监督学习中的所有课
自己练习: Python 在线编译器