Python DBSCAN - 如何根据向量的平均值绘制集群?

Posted

技术标签:

【中文标题】Python DBSCAN - 如何根据向量的平均值绘制集群?【英文标题】:Python DBSCAN - How to plot clusters based on mean of vectors? 【发布时间】:2019-03-14 21:57:48 【问题描述】:

您好,我已经获得了向量的平均值并使用 DBSCAN 对它们进行聚类。但是,我不确定应该如何绘制结果,因为我的数据没有 [x,y,z...] 格式。

样本数据集:

mean_vec = [[2.2771908044815063],
 [3.0691280364990234],
 [2.7700443267822266],
 [2.6123080253601074],
 [2.6043469309806824],
 [2.6386525630950928],
 [2.7034034729003906],
 [2.3540258407592773]]

我使用下面的代码(来自 scikit-learn)来实现我的集群:

X = StandardScaler().fit_transform(mean_vec)
db = DBSCAN(eps = 0.15, min_samples = 5).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

print('Estimated number of clusters: %d' % n_clusters_)

是否可以绘制出我的集群? scikit-learn 的情节对我不起作用。 scikit-learn 链接可以找到here

【问题讨论】:

所以你想按照我的理解对一维向量进行聚类? 是的,可能有水平散点图之类的东西? 我认为 DBSCAN 可以通过对算法进行一些修改来处理一维数据:arxiv.org/pdf/1602.03730.pdf 您可以在这里查看一种聚类方法:***.com/questions/35094454/… 可能,GMM 也可以工作。跨度> 【参考方案1】:

在一维数据上。使用内核密度估计而不是 DBSCAN。它得到了更好的理论支持和更好的理解。对于多变量情况,可以将 DBSCAN 视为 KDE 的一种快速近似

无论如何,绘制一维数据并不难。例如,您可以绘制 直方图

集群也必然对应于区间,因此您还可以为每个集群的 (min,max) 绘制线。

您甚至可以滥用二维散点图。只需将标签用作 y 值。

【讨论】:

以上是关于Python DBSCAN - 如何根据向量的平均值绘制集群?的主要内容,如果未能解决你的问题,请参考以下文章

Python读取csv文件做dbscan分析

Python读取csv文件做dbscan分析

聚类(kmeans,DBSCAN,OPTICS)

python实现DBSCAN算法

Scikit DBSCAN eps 和 min_sample 值确定

使用 python 和 DBSCAN 对高维数据进行聚类