如何找到DBSCAN的最佳参数?

问题描述 投票:-1回答:1

是否有任何工具可以为DBSCAN算法计算分钟数和eps的最佳值?

当前,我使用sklearn库来应用DBSCAN算法

from sklearn.cluster import DBSCAN

我尝试了具有多个分钟数和eps的算法,但没有进行任何计算。

python parameters sklearn-pandas dbscan
1个回答
1
投票

epsminpts都被视为超参数。在给定数据集的情况下,没有算法可以确定这些值的理想值。相反,必须在很大程度上根据您要解决的问题对其进行优化。

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

minpts应随数据集大小的增加而增大。

eps是一个值,用于处理您要查找的群集的半径。要选择一个值,我们可以执行一种弯腰技术(一种经常用于确定K均值聚类的最佳k的类似技术)。

  1. 让k =最近的邻居数
  2. 对于k的值,对于数据集中的每个点,计算每个点与其k个最近邻居之间的平均距离(某些程序包在某处内置了此功能)
  3. 计算出的X轴上的点数和y轴上的平均距离。
  4. 结果图应不断增加(只要您按平均距离对数组进行排序的次数不断增加)并且凹入向上。应该有一个点,增长率急剧上升,该点称为弯头点,其中包含您的最优eps,即弯头点的y值。
  5. 使用不同的k值运行此算法并比较结果。

[如果有确定的方法来求解最佳值,则会记录在案。目前,我们所能做的就是给出我们最好的预测值。同样,您要解决的问题可能会影响您选择肘点的方式-了解这一点很重要。

© www.soinside.com 2019 - 2024. All rights reserved.