我正尝试在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
我必须对具有非常高维度的数据进行聚类。我想知道如何尽可能准确地实现它。如何可视化集群和数据点?
附注:经过一些搜索后,我意识到可以应用PCA进行降维,但我想知道它是如何使用的。
发布于 2021-02-12 07:39:49
t-SNE和UMAP是可以帮助您实现良好可视化的工具。只需google PCA sklearn和阅读一些示例。您可以将数据的维度(让我们称其为新特性)减少到两到三个。然后,为每个集群的成员指定一种特定的颜色。您的曲线图应将数据点(具有相同颜色)显示为一个聚类。但是,请注意,使用这些工具并不一定要保持数据点在其原始空间中彼此之间的相对距离。换句话说,您的集群过程可能执行得很好,但这种“非常好”的性能在2维或3维上可能并不“明显”。
发布于 2021-02-12 08:58:14
这是我从Scikit-Learn网页上得到的一个非常简短的例子:
from sklearn import decomposition
pca = decomposition.PCA(n_components=2)
pca.fit(X)
X = pca.transform(X)
在本例中,X是特征矩阵。在本例中,n_components=2意味着您希望将数据缩减到新的2维空间中。在.tranform()之后,您的新特征矩阵X具有与其行相同数量的观察值,但只有三列,而不是它以前的所有特征。
然后,在聚类后,为不同的聚类分配不同的颜色,并在2D空间中绘制它们。你可以选择不同的n_components,但随着你增加它,它变得越来越难可视化。例如,对于n_components=3,您可以使用3D。对于4D,你可以使用颜色来显示额外的维度。对于5D,您可能希望更改数据点的大小,以此作为显示新维度的一种方式。
我附上了一张图片,在这里你可以看到如何使用基于PCA的可视化来展示训练和测试集上的分类模型的性能。您可以通过为每个组分配一种颜色来使用它进行聚类。
https://stackoverflow.com/questions/66167649
复制