|如何评估聚类模型?兰德指数、轮廓系数、Calinski Harabaz指数
我们可以通过对一系列曲目进行聚类来创建歌曲的自动播放列表 , 我们可以展示如何自动创建相似歌曲的子组 。 通过我们现有的歌曲知识 , 我们能够验证该聚类练习的结果 。
但是 , 如果我们对数据没有这种先验知识怎么办?如果数据甚至都没有被标记怎么办(在许多实际的聚类案例中就是这种情况)?即使是这样 , 如果这些标签最初对我们没有意义 , 该怎么办?有很多我从未听说过的艺术家 , 如果我们要对数千首曲目进行分组 , 那么手动验证每个集群显然是不切实际的 。 在这些情况下 , 我们需要某种数学方法来衡量聚类的''成功''程度 。
为了探索如何做到这一点 , 我们再次转向Spotify的API 。 假设我们从四个完全不同的播放列表中选取歌曲:
- Rap UK
- Smooth Jazz
- Classical Essentials
- Essential K-Pop
在开始之前 , 我们确实可能需要检查一下我们的假设 , 即来自这些不同播放列表的歌曲确实''与众不同'' 。 当然 , 在单个图表上同时可视化两个以上的特征是一项挑战 。 但是 , 如果我们绘制所有功能的散布矩阵 , 并按播放列表进行颜色编码 , 则可以看到有很多度量组合可以证明每种流派的独特特征 。
本文插图
我们在上中看到 , 在Scikit-Learn中运行聚类算法非常简单:
#We scale the data to ensure that #feature units don't impact distances from sklearn.preprocessing import StandardScaler sclaer = StandardScaler() X_scaled = scaler.fit_transform(X)#This scaled data can then be fed into the HAC algorithm from sklearn.cluster import AgglomerativeClustering #We can tell it how many clusters we're aiming for agg_clust = AgglomerativeClustering(n_clusters=4) assigned_clusters = agg_clust.fit_predict(X_scaled)我们还看到 , HAC具有三个不同的''链接标准'' , 即该算法将群集逐渐连接在一起的方法:
- ward(默认):选择两个聚类 , 以所有聚类中的方差增加最小的方式合并 。 通常 , 这会导致大小相当相等的群集 。
- complete(或最大链接):合并两个点之间最大距离最小的两个聚类 。
- ·average:合并所有点之间平均距离最小的两个聚类 。
当然 , 如果聚类是完美的 , 我们希望矩阵的每一行和每一列都恰好包含一个100%的条目(当然 , 它不需要成对角线 , 因为聚类名称的分配是任意的) 。
本文插图
默认的''向后''链接试图最小化群集中的方差 , 尽管这四个群集都有一些泄漏 , 但在所有四种类型中都表现出色 。
本文插图
''完全''链接显然效果不佳 。 它已将许多数据集放入群集A 。 群集C由一首说唱歌曲组成 。
本文插图
''平均''链接与''完全''链接具有类似的问题 。 许多数据点已放置在一个群集中 , 其中两个群集由一首歌曲组成 。
推荐阅读
- 模型|REVIT技巧!如何创建能量模型,实现能量优化
- 技术编程|如何利用数据库进行世界史研究
- 区块链|欧科云链任煜男做客西安广电电台节目,解读区块链如何赋能实体产业
- 苹果笔记本|如何让macbook合上时工作?解决苹果电脑合盖自动休眠问题-macw
- |如何分析“会员数据”,强化门店的竞争力?
- 拍照摄影|如何拍出赞爆朋友圈的自拍照?网红小姐姐公开拍照神器
- IOS系统|苹果免签封装如何实现?苹果免签封装会不会掉签?
- 帧数|帧数提升70% NV黑科技DLSS如何开启
- 拍照摄影|即将进入大学的新生想入手一台相机,该如何选?
- 月球|月球遗产如何保护?