python-machine-learning-book实战:聚类结果可视化方法
聚类分析(Clustering Analysis)是机器学习中一种重要的无监督学习方法,用于将数据集中的样本按照相似性划分为不同的组或簇。而可视化聚类结果则是理解和解释聚类效果的关键步骤。本文将基于python-machine-learning-book项目,介绍几种常用的聚类结果可视化方法,并结合实例代码和图片进行详细说明。
数据准备与聚类基础
在进行聚类结果可视化之前,我们需要先准备数据并进行聚类分析。python-machine-learning-book项目中提供了丰富的数据集和聚类算法实现。例如,我们可以使用sklearn.datasets中的make_blobs函数生成模拟的聚类数据,如code/ch11/ch11.ipynb所示:
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=150,
n_features=2,
centers=3,
cluster_std=0.5,
shuffle=True,
random_state=0)
这段代码生成了一个包含150个样本、2个特征、3个中心的数据集,我们可以使用k-means等聚类算法对其进行聚类。
常用聚类结果可视化方法
原始数据与聚类结果对比可视化
将原始数据和聚类后的结果进行对比可视化,可以直观地展示聚类算法的效果。在python-machine-learning-book项目的faq/issues-with-clustering.md中,提供了这样的示例。原始未标记数据的可视化如下:
经过k-means聚类后的结果可视化如下:
通过对比这两张图片,我们可以清晰地看到聚类算法将数据分成了3个不同的簇。
肘部法(Elbow Method)可视化
肘部法是一种用于确定最佳聚类数目的常用方法,它通过绘制不同聚类数k对应的聚类误差(如SSE)来选择最佳k值。在faq/issues-with-clustering.md中,展示了肘部法的可视化结果:
从图中可以看出,当k=3时,误差曲线出现明显的拐点,即“肘部”,因此可以认为最佳聚类数为3。
轮廓系数图(Silhouette Plot)可视化
轮廓系数(Silhouette Coefficient)是一种用于评估聚类质量的指标,它结合了聚类的紧密度和分离度。轮廓系数图可以直观地展示每个样本的轮廓系数,帮助我们判断聚类效果的好坏。在faq/issues-with-clustering.md中,分别展示了“好”的和“差”的聚类结果对应的轮廓系数图。
“好”的聚类结果(k=3)的轮廓系数图如下:
“差”的聚类结果(k=2)的轮廓系数图如下:
通过比较这两张图,我们可以看到“好”的聚类结果中,大部分样本的轮廓系数较高,且不同簇的轮廓系数分布较为均匀;而“差”的聚类结果中,样本的轮廓系数较低,且分布不均匀。
总结
本文介绍了python-machine-learning-book项目中常用的聚类结果可视化方法,包括原始数据与聚类结果对比可视化、肘部法可视化和轮廓系数图可视化。这些方法可以帮助我们直观地理解聚类算法的效果,选择最佳的聚类数目,并评估聚类质量。在实际应用中,我们可以根据具体的数据集和聚类算法选择合适的可视化方法,以便更好地分析和解释聚类结果。更多关于聚类分析的内容,可以参考项目中的code/ch11/ch11.ipynb和faq/issues-with-clustering.md等文件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考








