尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ML-For-Beginners 聚类可视化实战:用散点图探索尼日利亚音乐数据集的作业指南

ML-For-Beginners 聚类可视化实战:用散点图探索尼日利亚音乐数据集的作业指南 ML-For-Beginners 聚类可视化实战用散点图探索尼日利亚音乐数据集的作业指南【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners本文是围绕 ML-For-Beginners 课程5-Clustering/1-Visualize章节配套作业撰写的技术指南。该作业要求学习者围绕聚类前的数据可视化主题调研多种散点图绘制方式与绘图库并在 Notebook 中产出五张高质量散点图、写出图释发现。读完本文你将掌握基于matplotlib/seaborn/pandas的散点图绘制链路、五图作业的选题与组织方法以及对照评分标准自查产出质量的具体做法。1. 作业背景为什么聚类之前要先画散点图聚类Clustering属于无监督学习 中课程明确写道聚类作为一种技术极大地受益于恰当的可视化——先通过可视化理解数据形态才能为后续选择聚类算法K-Means、DBSCAN、层次聚类等提供依据。散点图Scatterplot之所以是聚类前最有用的可视化工具是因为它能直观地显示对象的成组聚集横轴与纵轴各取一个特征每个样本落在平面上的一个点天然聚集的点群往往就是潜在簇cluster的雏形。本课以从 Spotify 抓取的尼日利亚歌曲数据集 nigerian-songs.csv 为研究对象课程结尾明确指出下一课将用这份过滤后的数据做 K-Means 聚类去发现那些看起来以有趣方式重叠的群组。因此本作业实际上是下一课 K-Means 实战的侦察兵。2. 作业目标与任务要求原文完整继承作业原文对应 5-Clustering/1-Visualize/assignment.md给出的任务如下在本课中你已经使用了一些可视化技术来把握如何为聚类绘制数据。尤其是散点图对于发现对象的成组聚集非常有用。请调研不同的方式与不同的库来创建散点图并把你的工作记录在一个 Notebook 中。你可以使用本课的数据、其他课的数据或自己找到的数据但请在 Notebook 中注明其来源。用散点图绘制一些数据并解释你的发现。归纳为四个可执行的要点调研广度不止用一种方法、一个库画散点图要主动对比不同方式成文载体所有探索必须沉淀在一个 Notebook 中可运行、可复现数据来源优先使用仓库数据也可跨课程取数或自备数据自备数据必须标注来源结论输出每张图都要配文字说明——你发现了什么为什么它重要。3. 评分标准Rubric逐条解读作业附带的评分表是判断产出的唯一标尺原文如下标准优秀Exemplary合格Adequate需改进Needs Improvement交付物提交一个包含五个记录良好的散点图的 Notebook提交一个散点图少于五个且记录较差的 Notebook提交一个不完整的 Notebook三条关键信号值得注意数量硬指标5 张是优秀的下限少于 5 张直接降档质量软指标不只是画出来而是well-documented——每张图都要有充分的文字记录markdown 说明 图内注释完整性要求Notebook 必须能完整跑通代码、输出、结论俱全不能只有半截代码。4. 环境准备与数据加载结合仓库源码作业起点是课程自带的 Notebook。仓库中有两个可直接参考的文件课程模板5-Clustering/1-Visualize/notebook.ipynb仅含一个标题单元格的空白模板官方解答5-Clustering/1-Visualize/solution/notebook.ipynb完整的可视化实现可作为对照参考。4.1 安装与导入作业要求使用Seaborn进行高质量可视化安装与导入代码如下与解答 Notebook 一致!pip install seaborn import matplotlib.pyplot as plt import pandas as pd import seaborn as sns4.2 加载歌曲数据数据文件位于仓库 5-Clustering/data/nigerian-songs.csv共 530 行、16 列。从 Notebook 所在目录加载df pd.read_csv(../../data/nigerian-songs.csv) # 位于 5-Clustering/1-Visualize/solution/ 时 df.head()前几行数据如下namealbumartistartist_top_genrerelease_datelengthpopularitydanceabilityacousticnessenergyinstrumentalnesslivenessloudnessspeechinesstempotime_signatureSparkyMandy The JungleCruel Santinoalternative rb2019144000480.6660.8510.420.5340.11-6.6990.0829133.0155shuga rushEVERYTHING YOU HEARD IS TRUEOdunsi (The Engine)afropop202089488300.710.08220.6830.0001690.101-5.640.36129.9933LITT!LITT!AYLØindie rb2018207758400.8360.2720.5640.0005370.11-7.1270.0424130.0054Confident / Feeling CoolEnjoy Your LifeLady Donlinigerian pop2019175135140.8940.7980.6110.0001870.0964-4.9610.113111.0874wanted yourare.Odunsi (The Engine)afropop2018152049250.7020.1160.8330.910.348-6.0440.0447105.1154其中length单位是毫秒144000 ms ≈ 2 分 24 秒popularity是 0~100 的流行度评分danceability、energy、acousticness等音频特征均为 0~1 区间的小数。4.3 数据体检三步曲按课程流程加载后依次执行info()、isnull().sum()、describe()三连df.info() df.isnull().sum() df.describe()df.info()显示 16 列无缺失、无重复类型异常df.isnull().sum()全列为 0无需处理空值df.describe()的统计摘要给出关键量级popularity最小值为 0表示该曲目没有排名tempo均值约 116.5 BPMtime_signature绝大多数为 4 拍。数据体检的结果要原样写入你的 Notebook 并附一句解释——这正是well-documented的组成部分。5. 数据清洗散点图质量的前提课程指出若直接对全量数据画图popularity 0的未排名记录以及artist_top_genre为MissingSpotify 未分类的行都会成为噪声。作业沿用课程的过滤方案# 去掉未分类流派 df df[df[artist_top_genre] ! Missing] # 只看占比最高的三个流派 df df[(df[artist_top_genre] afro dancehall) | (df[artist_top_genre] afropop) | (df[artist_top_genre] nigerian pop)] # 去掉 popularity 为 0 的记录 df df[df[popularity] 0] # 复查各流派数量 top df[artist_top_genre].value_counts() plt.figure(figsize(10, 7)) sns.barplot(xtop.index, ytop.values) plt.xticks(rotation45) plt.title(Top genres, colorblue)过滤后数据集中在afro dancehall、afropop、nigerian pop三个流派噪声被剔除后续散点图中的点群才不会被未排名的离群点污染。作业中建议再用df.corr(numeric_onlyTrue)检查特征相关性课程观察到唯一较强的相关性出现在energy与loudness之间响度大的音乐通常能量感强其余特征间相关性较弱——这直接提示了散点图选轴的方向见第 6 节。6. 散点图绘制本课已演示的两种核心方式作业要求调研不同的方式而课程与解答 Notebook 已经示范了两种互为补充的散点图形态它们是作业的基线必须掌握。6.1 方式一seaborn.jointplot KDE 密度叠加先看双变量的联合分布jointplot会在散点区域周围附加两个边缘分布直方图/密度曲线sns.set_theme(styleticks) g sns.jointplot( datadf, xpopularity, ydanceability, hueartist_top_genre, kindkde, )kindkde使用核密度估计Kernel Density Estimate以连续概率密度曲线表示数据适合同时观察多个分布的形态。课程发现三个流派围绕一个大致收敛点形成同心圆状分布——在 popularity 与 danceability 这两个维度上尼日利亚听众的口味存在趋同现象。6.2 方式二FacetGrid plt.scatter 按类别分组散点同一条轴组合改用FacetGrid调用底层plt.scatter即可按artist_top_genre分色绘制经典散点图sns.FacetGrid(df, hueartist_top_genre, height5) \ .map(plt.scatter, popularity, danceability) \ .add_legend()课程指出散点图呈现了与 KDE 图相似的重叠收敛模式——三个流派在散点图上松散对齐、并无清晰分离的边界这意味着在这个特征平面上做聚类会有挑战也为下一课引入 K-Means 留下了悬念。注意早期版本 seaborn 用size5参数新版本已更名为height5解答 Notebook 中会出现size参数的弃用警告作业里请使用height。7. 进阶调研凑齐五张散点图的选题方案评分标准的优秀档要求五张记录良好的散点图。单纯重复同一轴组合两次达不到不同方式的要求下面给出可直接落地的五图选题方案全部可在仓库数据上复现方案 A本课基线图popularity×danceability按流派着色第 6.2 节代码记录三流派松散重叠的发现。方案 B强相关特征验证图课程在相关性热力图中发现energy与loudness强相关可绘制sns.scatterplot(datadf, xenergy, yloudness, hueartist_top_genre)预期点群沿对角线聚集可顺带撰写相关性 ≠ 因果性的讨论。方案 C多维特征散点pandas 内置绘图不引入新库直接用 pandas 的.plot.scatter()绘制不同轴组合如tempo×danceability、length×popularity对比不同特征组合下的聚集程度df.plot.scatter(xtempo, ydanceability, cpopularity, colormapviridis)方案 D3D 散点matplotlib 生态用mpl_toolkits.mplot3d在同一张图里放入三个特征轴如popularity、danceability、energy体会二维散点丢失的信息在三维中能否显现。方案 E多变量散点矩阵用sns.pairplot(df, hueartist_top_genre, vars[popularity, danceability, energy, loudness])一次性生成多组两两散点矩阵从全局视角寻找哪对特征最能分开三个流派。调研提示作业要求不同的库除本仓库使用的matplotlib、seaborn、pandas外可以按作业要求自行探索其他绘图生态例如交互式图表库并在 Notebook 中注明各方案的适用场景与优缺点。不要照抄同一张图改个标题充数——评分关注的是方式与库的多样性。8. 写出well-documented散点图的四步模板对照评分标准中的 Exemplary 档每张散点图建议用以下四段式组织文字记录Notebook 中每图配一个 Markdown 单元格 一个代码单元格目的Why这张图想回答什么问题例三个流派在 popularity 维度上是否可分做法How选择了哪个库、哪种方式、哪对特征为什么这样选轴发现What肉眼可见的点群、重叠、离群点或趋势例三流派围绕某 danceability 值收敛对聚类的启示So What这组特征适合/不适合用来聚类下一课应优先尝试哪种算法方向。若使用自己搜集的数据务必在 Notebook 中注明来源若使用仓库其他课程的数据同样标注数据文件路径。仓库中可作选题的数据还包括 2-Regression/data/US-pumpkins.csv南瓜价格与 4-Classification/data/cleaned_cuisines.csv菜系配料跨课程取数本身就是调研不同数据集的加分项。9. 参考实现与验收清单9.1 仓库可参考的实现官方 Python 解答5-Clustering/1-Visualize/solution/notebook.ipynbR 语言版本R 学习者可对照5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb另有同目录.Rmd与.html渲染版Julia 语言说明5-Clustering/1-Visualize/solution/Julia/README.md课程正文含聚类算法选型表与全部可视化代码5-Clustering/1-Visualize/README.md9.2 提交前自查清单Notebook 中恰好包含或超过5 张散点图至少使用了2 种以上绘图方式或库如 jointplot / FacetGrid / scatterplot / pairplot / pandas 内置绘图每张图都有 Markdown 文字说明包含目的、做法、发现与聚类启示若使用了仓库外的数据已在 Notebook 中标注来源Notebook 从上到下可完整运行可从模板 notebook.ipynb 起步数据清洗过滤 Missing 流派、popularity0有据可查而不是凭空丢行。对照评分表满足前三条即达到优秀Exemplary档只画图不写说明、数量不足 5 张则落入合格Adequate档代码残缺无法运行只能得到需改进Needs Improvement。本作业完成后你将带着三个流派在该特征空间松散重叠的明确判断进入下一课——用 K-Means 在这些看似纠缠的数据中寻找隐藏的分组。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表