sklearn中的加权聚类

问题描述 投票:0回答:1

假设我有一组点(x,y和大小)。我想在我的数据中找到聚类,使用 sklearn.cluster.DBSCAN 和它们的中心。如果我对每个点都一视同仁,那就没有问题。但实际上我想要的是加权中心,而不是几何中心(这意味着一个较大的点应该比一个较小的点被计算的更多)。

我遇到了 sample_weight但我不太明白这是否是我所需要的。当我使用 sample_weight (右边)我得到的簇和不使用时的情况完全不同(左边)。

enter image description here

其次,我想使用 np.repeat(x,w) 其中x是我的数据,w是每个点的大小,所以我得到的点的多个副本与它们的权重成正比。但这可能不是一个聪明的解决方案,因为我得到了很多数据,对吗?

是否 sample_weight 在我的情况下有用,或者有什么建议比使用 np.repeat? 我知道有些问题是关于 sample_weight 已经有了,但我读不出来具体怎么用。

谢谢!

python python-3.x scikit-learn cluster-analysis dbscan
1个回答
0
投票

对于DBSCAN来说,最重要的是参数设置。有2个参数。epsilonminPts (=min_samples). epsilon参数是你的点周围的半径和 minPts 在以下情况下,将您的点视为一个集群的一部分 minPts 是满足的。因此,不使用 np.repeat 我建议调整这个数据集的参数。

根据文件中的 DBSCAN, sample_weight 是一个运行时的调整参数。

另一种减少内存和计算时间的方法是删除(近似)重复的点并使用sample_weight来代替。

我想你应该先解决结果的质量问题,然后再调整你的运行时间。

我不确定你说的加权中心是什么意思,可能你指的是不同的聚类算法,如 高斯混合模型.

© www.soinside.com 2019 - 2024. All rights reserved.