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

gru*_*gly 8 python cluster-analysis mean-shift

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

句法:

sklearn.cluster.estimate_bandwidth(X, quantile=0.3, n_samples=None, random_state=0)
Run Code Online (Sandbox Code Playgroud)

我发现估计的带宽随着分位数的增加而增加,从而导致簇数量减少。类似地,分位数的减少会减少带宽,从而导致更高的数量。簇。

所以,看来不行。簇的数量取决于所选的分位数值。

如何选择最佳分位数?

小智 1

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

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

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