sklearn中的加权聚类
Posted
技术标签:
【中文标题】sklearn中的加权聚类【英文标题】:Weighted clustering in sklearn 【发布时间】:2020-08-10 23:11:45 【问题描述】:假设我有一组点(x、y 和大小)。我想使用sklearn.cluster.DBSCAN
及其中心在我的数据中查找集群。如果我对每一点都一视同仁,那就没问题了。但实际上我想要加权中心而不是几何中心(这意味着更大的点应该比更小的点计算更多)。
我遇到了sample_weight
,但我不太明白这是否是我需要的。当我使用sample_weight
(右侧)时,我得到的集群与我不使用它的情况(左侧)完全不同:
其次,我考虑使用np.repeat(x,w)
,其中 x 是我的数据,w 是每个点的大小,因此我得到了与它们的权重成正比的点的多个副本。但这可能不是一个聪明的解决方案,因为我得到了大量数据,对吧?
sample_weight
在我的情况下有用吗?或者有没有比使用np.repeat
更好的解决方案的建议?我知道已经有一些关于sample_weight
的问题,但我无法准确读出如何使用它。
谢谢!
【问题讨论】:
是sklearn.cluster.DBSCAN
的方法。我使用它:fit_predict(self, X[, y, sample_weight])
【参考方案1】:
DBSCAN 最重要的是参数设置。有 2 个参数,epsilon
和 minPts
(=min_samples
)。 epsilon 参数是您的点周围的半径,如果满足minPts
,minPts
会将您的点视为集群的一部分。因此,我建议不要使用np.repeat
,而是调整此数据集的参数。
根据DBSCAN 的文档,sample_weight
是您运行时的调优参数:
另一种减少内存和计算时间的方法是删除 (接近)重复点并使用 sample_weight 代替。
我认为您希望在调整运行时之前先解决结果的质量问题。
我不确定你所说的加权中心是什么意思,可能你指的是不同的聚类算法,例如 Gaussian mixture model。
【讨论】:
嗯,它们已经被加权了,对吧。这不就是基于密度的意思吗?如果您共享实际数据和实际代码会更有帮助,除非它是专有的。我会说算法正在做它应该做的事情。以上是关于sklearn中的加权聚类的主要内容,如果未能解决你的问题,请参考以下文章
使用 sklearn 库中的 KMeans 实现彩色图像聚类分割