假设我有一组点(x,y和大小)。我想在我的数据中找到聚类,使用 sklearn.cluster.DBSCAN
和它们的中心。如果我对每个点都一视同仁,那就没有问题。但实际上我想要的是加权中心,而不是几何中心(这意味着一个较大的点应该比一个较小的点被计算的更多)。
我遇到了 sample_weight
但我不太明白这是否是我所需要的。当我使用 sample_weight
(右边)我得到的簇和不使用时的情况完全不同(左边)。
其次,我想使用 np.repeat(x,w)
其中x是我的数据,w是每个点的大小,所以我得到的点的多个副本与它们的权重成正比。但这可能不是一个聪明的解决方案,因为我得到了很多数据,对吗?
是否 sample_weight
在我的情况下有用,或者有什么建议比使用 np.repeat
? 我知道有些问题是关于 sample_weight
已经有了,但我读不出来具体怎么用。
谢谢!
对于DBSCAN来说,最重要的是参数设置。有2个参数。epsilon
和 minPts
(=min_samples
). epsilon参数是你的点周围的半径和 minPts
在以下情况下,将您的点视为一个集群的一部分 minPts
是满足的。因此,不使用 np.repeat
我建议调整这个数据集的参数。
根据文件中的 DBSCAN, sample_weight
是一个运行时的调整参数。
另一种减少内存和计算时间的方法是删除(近似)重复的点并使用sample_weight来代替。
我想你应该先解决结果的质量问题,然后再调整你的运行时间。
我不确定你说的加权中心是什么意思,可能你指的是不同的聚类算法,如 高斯混合模型.