BanditPAM MNIST聚类教程:用t-SNE可视化10个聚类中心的高效实现
【免费下载链接】BanditPAMBanditPAM C++ implementation and Python package项目地址: https://gitcode.com/gh_mirrors/ba/BanditPAM
BanditPAM是一个高效的C++实现的K-medoids聚类算法,同时提供Python包方便用户使用。本教程将展示如何使用BanditPAM对MNIST数据集进行聚类,并通过t-SNE降维可视化10个聚类中心,帮助你快速掌握这一强大工具的使用方法。
准备工作:安装BanditPAM
首先,你需要安装BanditPAM。最简单的方法是通过pip安装:
pip install banditpam如果你需要从源代码构建,可以克隆仓库:
git clone https://gitcode.com/gh_mirrors/ba/BanditPAM cd BanditPAM pip install .加载MNIST数据并进行t-SNE降维
BanditPAM提供了一个MNIST数据集的示例脚本,我们可以参考scripts/readme_ex2.py来加载数据并进行预处理。
首先,我们需要加载MNIST数据集的一个子集,并使用t-SNE将高维数据降维到2维空间以便可视化:
import pandas as pd from sklearn.manifold import TSNE # 加载MNIST数据集子集 X = pd.read_csv("data/MNIST-1k.csv", sep=" ", header=None).to_numpy() # 使用t-SNE降维 X_tsne = TSNE(n_components=2).fit_transform(X)使用BanditPAM进行聚类
接下来,我们使用BanditPAM对MNIST数据进行聚类。由于MNIST有10个数字类别,我们将聚类数量设置为10:
from banditpam import KMedoids # 初始化BanditPAM模型,设置聚类数量为10 kmed = KMedoids(n_medoids=10, algorithm="BanditPAM") # 使用L2距离进行聚类 kmed.fit(X, "L2")可视化聚类结果
聚类完成后,我们可以将结果可视化。在可视化中,我们用蓝色点表示普通数据点,用红色点突出显示聚类中心(medoids):
从图中可以看到,BanditPAM成功地将MNIST数据聚成了10个簇,每个簇的中心用红色点表示。这些聚类中心对应着不同的手写数字类别,展示了BanditPAM在处理复杂高维数据时的优秀性能。
理解聚类中心的意义
聚类中心(medoids)是每个簇中最具代表性的点。在MNIST数据集中,这些中心对应着不同数字的典型写法。通过分析这些聚类中心,我们可以更好地理解数据的分布特征。
BanditPAM的高效实现使得即使在较大的数据集上,也能快速找到最优的聚类中心。其核心算法在src/algorithms/banditpam.cpp中实现,通过智能的搜索策略减少了不必要的距离计算,从而提高了聚类速度。
总结
本教程展示了如何使用BanditPAM对MNIST数据集进行聚类,并通过t-SNE可视化聚类结果。BanditPAM作为一种高效的K-medoids算法,在处理高维数据时表现出色,能够快速找到最优的聚类中心。
通过本教程,你已经掌握了BanditPAM的基本使用方法。接下来,你可以尝试调整聚类数量、距离度量等参数,探索不同的聚类效果。BanditPAM的更多高级用法可以参考官方文档和示例脚本,开始你的聚类之旅吧!
【免费下载链接】BanditPAMBanditPAM C++ implementation and Python package项目地址: https://gitcode.com/gh_mirrors/ba/BanditPAM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考