如何在 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 中可视化多维集群?的主要内容,如果未能解决你的问题,请参考以下文章