ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ML-For-Beginners 聚类作业实战:K-Means 之外,如何为尼日利亚音乐数据选择并实现替代聚类方法

2026/9/11 8:38:43 拓冰建站 浏览量
ML-For-Beginners 聚类作业实战:K-Means 之外,如何为尼日利亚音乐数据选择并实现替代聚类方法 ML-For-Beginners 聚类作业实战K-Means 之外如何为尼日利亚音乐数据选择并实现替代聚类方法【免费下载链接】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 单元「聚类」第 2 课的作业translations/de/5-Clustering/2-K-Means/assignment.md对应英文原版 5-Clustering/2-K-Means/assignment.md展开课程已经演示了用 K-Means 对 Spotify 尼日利亚歌曲数据进行聚类而作业要求你换一种非 K-Means 的聚类方法重新建模并总结学习心得。读完本文你将理解 K-Means 在什么场景下力不从心、Scikit-learn 提供了哪些替代方案、如何用层次聚类或密度聚类完成这份作业以及如何对照评分表交付一份「文档完备」的 notebook。作业原文解读任务到底是什么作业原文德语版的完整要求如下Anweisungen任务说明在本课中你已经学习了 K-Means 聚类。有时 K-Means 并不适合你的数据。请创建一个 notebook使用本课的数据或来自其他来源的数据请注明来源展示一种不使用 K-Means的聚类方法。你学到了什么拆解这句话可以得到三个硬性交付物一个可运行的 notebook——建议从课程自带的 5-Clustering/2-K-Means/notebook.ipynb 出发它已经完成了数据导入和初步清洗一种非 K-Means 的聚类方法——这是与课程形成对比的关键也是评分表关注的焦点注明数据来源——如果使用课程数据5-Clustering/data/nigerian-songs.csv应说明其来自 Kaggle、由 Spotify 抓取如果自选数据集则必须给出出处。课程铺垫为什么 K-Means 可能「不适合你的数据」作业里那句「有时 K-Means 并不适合你的数据」并非客套话它在课程 5-Clustering/2-K-Means/README.md 中是有明确数据证据的。K-Means 的机制与先天假设K-Means 源于信号处理领域通过一系列观测把数据划分为 k 个簇每个观测被归入离它最近的「均值」即簇中心centroid。课程给出了三步执行流程算法从数据集中采样选出 k 个中心点循环执行把每个样本分配给最近的质心 → 用分配到各质心的样本均值生成新质心 → 计算新旧质心之差直到质心稳定。课程明确指出 K-Means 的一大缺点你必须预先确定 k 的值簇的数量而「肘部法elbow method」只能帮助估计一个合理的起点。课程实验留下的「坏消息」在 notebook.ipynb 中课程用过滤后的数据只保留 afro dancehall、afropop、nigerian pop 三种流派并排除 popularity 为 0 的样本做了 K-Means 建模得到两个关键指标Silhouette score轮廓系数≈ 0.53该分数取值范围为 -1 到 1越接近 1 表示簇越密集、与其他簇分离越清晰接近 0 表示簇互相重叠、样本紧贴决策边界。0.53 处于中间地带说明「数据对这种聚类方式并不是特别合适」。Accuracy准确率不佳将聚类标签与真实流派标签比对后正确标记的样本占比很低且散点图中簇的形状混杂。课程给出的解释是这组数据过于不平衡、特征之间相关性太弱、列与列之间的方差variance过大难以聚出干净的簇。所谓方差即「与均值之差的平方的平均值」——本数据集的数值围绕均值发散得有点过头。这是作业布置的动机所在当数据形状不满足 K-Means 的球形簇假设时就该换算法了。方法选型Scikit-learn 里 K-Means 之外的世界作业要求「展示一种不同的聚类方法」而选型依据就在前一课 5-Clustering/1-Visualize/README.md 中。该课 README 给出了 Scikit-learn 支持的主要聚类方法与适用场景对照表摘录如下方法名称适用场景K-Means通用目的归纳式inductiveAffinity propagation亲和传播多而大小不均的簇归纳式Mean-shift均值漂移多而大小不均的簇归纳式Spectral clustering谱聚类少而均匀的簇直推式transductiveWard hierarchical clusteringWard 层次聚类多而受约束的簇直推式Agglomerative clustering凝聚聚类多而受约束的簇、非欧氏距离直推式DBSCAN非平坦几何、大小不均的簇直推式OPTICS非平坦几何、密度不一的簇直推式Gaussian mixtures高斯混合模型平坦几何归纳式BIRCH含离群点的大数据集归纳式从概念分类看非 K-Means 方法大致归为四类同样出自该课 README层次聚类Hierarchical clustering按对象之间距离的远近逐层合并或分裂形成簇Scikit-learn 的AgglomerativeClustering即属此类基于分布的聚类Distribution-based clustering以统计建模为核心计算数据点属于某簇的概率再行分配高斯混合模型GMM是代表基于密度的聚类Density-based clustering按数据点的密度彼此聚集程度分簇离群点视为噪声DBSCAN、Mean-shift、OPTICS 属于此类基于网格的聚类Grid-based clustering对多维数据划网格、按单元格分簇。对照本作业的数据特性簇的边界模糊、存在噪声与离群点层次聚类、DBSCAN、高斯混合模型是三个最合适的候选因为它们不像 K-Means 那样强依赖「k 值 球形簇」的设定。实战指引三种非 K-Means 方案的 notebook 写法下面的代码框架基于课程 notebook 已完成的预处理读取 5-Clustering/data/nigerian-songs.csv、过滤出三种流派、用LabelEncoder把artist_top_genre编码为数值、选取 popularity / danceability / acousticness / loudness / energy 等特征列可作为完成作业的参考起点建议在 Jupyter 中逐格运行并补充文字说明。方案 A层次聚类Agglomerative Clustering层次聚类不需要预设 k可以先绘制树状图dendrogram观察簇的自然结构再决定切分位置from sklearn.cluster import AgglomerativeClustering from sklearn import metrics # 基于课程 notebook 中的特征矩阵 X 进行聚类 agg AgglomerativeClustering(n_clusters3) agg_labels agg.fit_predict(X) # 与 K-Means 一样用轮廓系数评估 score metrics.silhouette_score(X, agg_labels) print(Agglomerative silhouette score:, score)如果不想手动指定n_clusters还可以用scipy.cluster.hierarchy绘制树状图观察哪个高度「切割」能形成合理分组——这与 K-Means 必须先用肘部法猜 k 形成鲜明对比。方案 B基于密度的 DBSCANDBSCAN 自动发现任意形状的簇并把稀疏区域标记为噪声天然不惧怕本数据的离群点from sklearn.cluster import DBSCAN # eps 控制邻域半径min_samples 控制成为核心点的最少样本数 db DBSCAN(eps0.5, min_samples5) db_labels db.fit_predict(X) # 注意DBSCAN 可能把样本标为 -1噪声评估前需先统计非噪声样本占比 n_noise list(db_labels).count(-1) print(Noise points:, n_noise, of, len(db_labels))eps与min_samples是 DBSCAN 的两个核心参数直接影响簇的粒度与噪声比例可以在 notebook 中做小范围网格尝试并记录结果。方案 C高斯混合模型Gaussian MixtureGMM 用多个高斯分布拟合数据输出的是「样本属于各簇的概率」而非硬标签适合簇形状偏椭圆的场景from sklearn.mixture import GaussianMixture from sklearn import metrics gmm GaussianMixture(n_components3, random_state0) gmm_labels gmm.fit_predict(X) score metrics.silhouette_score(X, gmm_labels) print(GMM silhouette score:, score)无论如何都要做的三步收尾与原实验对比用同一份特征矩阵 X 和同一指标silhouette score与 K-Means 的 0.53 对照回答「新方法是否改善了簇的质量」可视化沿用课程中的plt.scatter(df[popularity], df[danceability], clabels)散点图画法直观对比三种方法的簇形状如实总结局限不要为了「更好看」而夸大结论——如果新方法同样受制于数据方差与类不平衡把它写进「What did you learn?」反而是加分项。评分表解读怎样才算「Vorbildlich模范」作业附带的评分表Rubric是三档制重点不在方法多高级而在文档化程度标准模范Vorbildlich合格Angemessen待改进Verbesserungswürdig—提交一个文档完备的聚类模型 notebook提交一个缺乏良好文档和/或不完整的 notebook提交不完整的工作对照此表交付前请自查四点每个代码格前有 Markdown 说明解释「为什么选这个方法、参数为何这么设」数据来源与预处理记录完整注明数据集出处课程数据来自 5-Clustering/data/nigerian-songs.csv源于 Kaggle/Spotify并交代过滤、编码步骤有评估指标与对比结论至少给出 silhouette score 或噪声占比等可量化结果并和 K-Means 基线对照无未运行的单元格、无报错输出确保 notebook 从上到下可以一键顺序执行。学习要点这份作业真正想让你理解什么结合课程 5-Clustering/2-K-Means/README.md 的「Variance」一节与挑战Challenge部分这份作业的核心学习目标是没有万能聚类算法K-Means 是最常用的方法但它要求预设 k、偏好球形且等方差的簇对离群点和量纲敏感指标会「说话」silhouette score0.53和簇的散点形状已经提前预告了 K-Means 的不适配学会读指标比盲目调参更重要特征工程能救场课程挑战提示——对数据做标准化standard scaling后虽然轮廓系数可能下降但肘部图的「折点」会变得更平滑因为不缩放的数据会让低方差特征占据过高权重同理换列、去离群点、加样本权重都能改变聚类结果对比才有意义只有把非 K-Means 方法的结果放回 K-Means 的基线上比较才能真正回答「为什么有时 K-Means 不合适」。延伸阅读与参考资源课程正文5-Clustering/2-K-Means/README.mdK-Means、肘部法、轮廓系数、方差概念的完整讲解方法选型基础5-Clustering/1-Visualize/README.mdScikit-learn 聚类方法对照表与概念分类实验起点5-Clustering/2-K-Means/notebook.ipynb含数据导入、三种流派过滤、K-Means 与轮廓系数计算数据集5-Clustering/data/nigerian-songs.csv530 行、16 列 Spotify 尼日利亚歌曲特征解答参考5-Clustering/2-K-Means/solution/notebook.ipynb课程官方解法 notebook可与自己的实现对照作业原文英文5-Clustering/2-K-Means/assignment.md【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考