在python的MeanShift模块中估计带宽时如何选择合适的分位数?

Posted

技术标签:

【中文标题】在python的MeanShift模块中估计带宽时如何选择合适的分位数?【英文标题】:How to choose appropriate quantile value while estimating bandwidth in MeanShift module of python? 【发布时间】:2015-04-04 18:47:45 【问题描述】:

我正在对数据集执行均值偏移聚类。 estimate_bandwidth 函数估计执行均值漂移聚类的适当带宽。

语法:

sklearn.cluster.estimate_bandwidth(X, quantile=0.3, n_samples=None, random_state=0)

我发现估计的带宽随着分位数的增加而增加,从而导致集群数量减少。同样,分位数的减少会降低带宽,因此不会增加。集群。

所以,似乎没有。簇的数量取决于选择的分位数。

如何选择最佳分位数?

【问题讨论】:

运气和经验。很遗憾。但究竟什么是“最佳”? “最优”在某种意义上说集群是稳定的。 那么从这个意义上说,无穷大是最优的。 【参考方案1】:

分位数用于 KNN(在 estimate_bandwidth 函数中使用)来确定带宽。 具体来说:

n = KNN 中的样本数 = 批次中的样本数 * 分位数

然后将根据同一簇中样本之间的平均成对距离(由 KNN 返回)计算带宽。所以你可以用它来弄清楚如何设置带宽。此函数返回的带宽平均会覆盖 n 个样本,这将极大地影响 Mean Shift 将返回的簇数。

【讨论】:

以上是关于在python的MeanShift模块中估计带宽时如何选择合适的分位数?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中MeanShift算法视频移动对象分析

使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象

如何在带有 opencv 的 NDK 中使用 meanshift?

一个linux 4.9内核的bbr带宽估计偏低问题

scikit learn (python) 中的 Meanshift 不理解数据类型

Opencv中的MeanShift图像分割和视频背景分离(python实现)