如何找到 DBSCAN 的最佳参数?

Sas*_*cha 3 python parameters dbscan sklearn-pandas

有没有任何工具可以计算 DBSCAN 算法的 minpts 和 eps 的最佳值?

目前我使用sklearn库来应用DBSCAN算法

from sklearn.cluster import DBSCAN
Run Code Online (Sandbox Code Playgroud)

我尝试了具有多个 minpts 和 eps 的算法,但没有任何计算。

小智 8

epsminpts都被视为超参数。在给定数据集的情况下,没有算法可以确定这些值的完美值。相反,它们必须主要根据您要解决的问题进行优化。

关于如何优化的一些想法:

minpts随着数据集大小的增加应该更大。

eps是一个涉及您要查找的簇半径的值。为了选择一个值,我们可以执行一种肘部技术(一种类似的技术,通常用于确定kK 均值聚类中的最佳值)。

  1. 令 k = 最近邻居的数量
  2. 对于 k 值,对于数据集中的每个点,计算每个点与其 k 个最近邻点之间的平均距离(某些包在某处内置了此函数)
  3. 在 X 轴上绘制点数,在 y 轴上绘制您计算的平均距离。
  4. 生成的图表应该是递增的(只要您按平均距离递增地对数组进行排序)并且向上凹。应该有一个点,增长率急剧跳跃,这个点称为肘点,包含你的最佳eps,即肘点的y值。
  5. 使用不同的 k 值运行该算法并比较结果。

如果有一个确定的方法来求解最佳值,那么它将被大量记录下来。目前,我们所能做的就是给出我们最好的计算猜测。再说一遍,您试图解决的问题可能会影响您选择肘点的方式 - 理解这一点很重要。