在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模块中估计带宽时如何选择合适的分位数?的主要内容,如果未能解决你的问题,请参考以下文章
使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象
如何在带有 opencv 的 NDK 中使用 meanshift?