如何在 Python 中可视化多维集群?

Posted

技术标签:

【中文标题】如何在 Python 中可视化多维集群?【英文标题】:how to visualize multi-dimensionnal clusters in Python? 【发布时间】:2021-05-15 22:56:58 【问题描述】:

我正在尝试在 Python 中测试 3 种聚类算法(K-means、SpectralClustering、Mean Shift)。 我有一个包含 26 列和数千行的数据集,我需要一些高维数据集的帮助(子集如下所示)。

UserID  Communication_dur   Lifestyle_dur   Music & Audio_dur   Others_dur  Personnalisation_dur    Phone_and_SMS_dur   Photography_dur Productivity_dur    Social_Media_dur    System_tools_dur    ... Music & Audio_Freq  Others_Freq Personnalisation_Freq   Phone_and_SMS_Freq  Photography_Freq    Productivity_Freq   Social_Media_Freq   System_tools_Freq   Video players & Editors_Freq    Weather_Freq
1   63  219 9   10  99  42  36  30  76  20  ... 2   1   11  5   3   3   9   1   4   8
2   9   0   0   6   78  0   32  4   15  3   ... 0   2   4   0   2   1   2   1   0   0

我必须对具有非常高维度的数据进行聚类。我想知道如何尽可能准确地实现它。 如何可视化集群和数据点?

P.S:经过一番搜索,我意识到可以应用 PCA 进行降维,但我想知道如何使用它。

【问题讨论】:

聚类它们的目的是什么?我的意思是评估集群是否良好,必须根据目的进行评估。如果您只是使用另一种降维机制来比较集群(如 PCA 或 t-SNE),您的评估可能会基于该机制存在偏差。 我尝试根据用户对他们使用的应用程序的行为进行分组。然后,我尝试使用轮廓系数测试算法,然后我想可视化集群,但我不能,因为我有多个-维度数据 你想用集群回答什么问题,或者你打算用这些组做什么? 根据用户的应用使用行为发现不同的用户配置文件。 【参考方案1】:

PCA、t-SNE 和 UMAP 是可以帮助您实现良好可视化的工具。只需谷歌 PCA sklearn 并阅读一些示例。您可以将数据的维度(我们称之为新功能)减少到两个或三个。然后,为每个集群的成员指定一种特定的颜色。您的绘图应将数据点(具有相同颜色)显示为一个集群。但是,请注意,使用此类工具不一定保持数据点在其原始空间中彼此之间的相对距离。换句话说,您的聚类过程可能表现良好,但这种“非常好”的性能在 2 或 3 维度上可能并不“明显”。

【讨论】:

感谢您的回答!这是我第一次接触 ML。你能给我一个使用 ¨PCA 可视化聚类的例子吗?【参考方案2】:

这是我从 Scikit-Learn 网页获得的一个非常简短的示例:

from sklearn import decomposition
pca = decomposition.PCA(n_components=2)
pca.fit(X) 
X = pca.transform(X)

在这个例子中,X 是特征矩阵。在这个例子中,n_components=2 意味着你想把你的数据减少到一个新的二维空间。在 .tranform() 之后,您的新特征矩阵 X 与其行具有相同数量的观察值,但只有三列,而不是其先前的所有特征。

然后,在聚类之后,为不同的聚类分配不同的颜色,并将它们绘制在 2D 空间中。您可以选择不同的 n_components,但随着它的增加,它变得越来越难以可视化。例如,对于 n_components=3,您可以使用 3D。对于 4D,您可以使用颜色来显示额外的维度。对于 5D,您可能希望更改数据点的大小以显示新维度。

我附上了一张图片,您可以在其中了解如何使用基于 PCA 的可视化来展示分类模型在训练集和测试集上的性能。您可以通过为每个组分配一种颜色来将其用于聚类。

【讨论】:

以上是关于如何在 Python 中可视化多维集群?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中绘制多维数据点

Python可视化展示-多维数据可视化分析

一图胜千言!Python 数据可视化多维讲解

一图胜千言!Python 数据可视化多维讲解

如何在python中绘制重叠簇

在多维数据集或 mdx 查询中可视化“ALL”汇总