调参小技巧-DBSCAN参数选取方法

  • 利用循环迭代一些参数变量选取最适合的参数

1.初始数据处理部分,请自行对照调整,此处仅作为保持流程完整使用。

# 读入第三方包
from sklearn import preprocessing
# 选取建模的变量
predictors = ['Birth_Rate','Death_Rate']
# 变量的标准化处理
X = preprocessing.scale(Province[predictors])
X = pd.DataFrame(X)

2.迭代不同值得参数

# 构建空列表,用于保存不同参数组合下的结果
res = []
# 迭代不同的eps值
for eps in np.arange(0.001,1,0.05):
    # 迭代不同的min_samples值
    for min_samples in range(2,10):
        dbscan = cluster.DBSCAN(eps = eps, min_samples = min_samples)
        # 模型拟合
        dbscan.fit(X)
        # 统计各参数组合下的聚类个数(-1表示异常点)
        n_clusters = len([i for i in set(dbscan.labels_) if i != -1])
        # 异常点的个数
        outliners = np.sum(np.where(dbscan.labels_ == -1, 1,0))
        # 统计每个簇的样本个数
        stats = str(pd.Series([i for i in dbscan.labels_ if i != -1]).value_counts().values)
        res.append({'eps':eps,'min_samples':min_samples,'n_clusters':n_clusters,'outliners':outliners,'stats':stats})
# 将迭代后的结果存储到数据框中        
df = pd.DataFrame(res)

# 根据条件筛选合理的参数组合
df.loc[df.n_clusters == 3, :]

在这里插入图片描述

  • eps半径处于一个突变中
  • min_samples选取最小个数也是处于一个剑锋
  • n_clusters聚类数无明显优势
  • outliners异常值处于突变
  • stats样本聚类数分布较平均
  • 15
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
### 回答1: 我了解KANN-DBSCAN这个算法,它是一种基于密度的聚类算法,可以帮助将数据集中的样点区分为不同的类别。该法可以在高维数据集中处理噪声和异常值,并且可以自适应地调整聚类的密度阈值,因此非常适用于大规模数据聚类任务。 ### 回答2: KANN-DBscan是一种基于K近邻图和DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法的聚类方法。它的目标是通过结合K近邻图和DBSCAN的优势来进行高效和准确的聚类。 首先要解释一下K近邻图和DBSCAN算法。K近邻图是一种将数据点连接在一起的图结构,其中每个数据点与其K个最近邻点相连。DBSCAN算法是一种基于密度的聚类算法,它将数据点分为核心点、边界点和噪声点,并根据密度相连的数据点将它们聚类在一起。 KANN-DBscan的核心思想是通过建立K近邻图来存储数据点之间的距离关系,并利用这个图来加速DBSCAN算法的聚类过程。具体而言,KANN-DBscan首先根据给定的距离阈值构建K近邻图,然后根据图的连接关系确定核心点、边界点和噪声点。接下来,它通过利用图的连接关系和DBSCAN的聚类算法来进行聚类。 相比于传统的DBSCAN算法,KANN-DBscan具有以下优势。首先,K近邻图的建立可以大大减少计算密度的开销,从而提高聚类的效率。同时,KANN-DBscan还可以解决传统DBSCAN算法中距离阈值的选择问题,通过自适应地确定距离阈值来提高聚类结果的准确性。 总结来说,KANN-DBscan是一种结合了K近邻图和DBSCAN的聚类方法,它通过K近邻图的建立和DBSCAN聚类算法的优势来提高聚类的效率和准确性。这种方法在处理大规模数据集时具有较好的性能,有助于发现数据集中的分组模式和噪声点。 ### 回答3: KANN-DBSCAN是基于K-近邻查询和密度聚类的一种改进算法。KANN-DBSCAN算法的主要目标是在高维数据集中有效地发现聚类,并解决传统DBSCAN算法在高维数据集上的性能问题。 KANN-DBSCAN通过使用K-近邻查询来解决传统DBSCAN算法在高维数据集上计算距离矩阵的问题。K-近邻查询是一种通过计算给定数据点附近的最近邻来寻找k个最近邻的方法。通过使用K-近邻查询,KANN-DBSCAN可以快速找到每个数据点附近的k个最近邻,避免了计算距离矩阵的复杂度。 另外,KANN-DBSCAN还引入了一个新的密度计算方法,称为c-近邻。c-近邻是指距离某个数据点不超过一定阈值的其他数据点的数量。利用c-近邻来替代传统DBSCAN算法中的密度定义,可以更好地适应高维数据集的特点。 KANN-DBSCAN算法的步骤如下: 1. 使用K-近邻查询找到每个数据点的k个最近邻。 2. 基于c-近邻计算每个数据点的密度,并将密度大于一定阈值的数据点标记为核心点。 3. 通过连接核心点之间的边来构建聚类。如果两个核心点的c-近邻有重叠,则它们属于同一个聚类。 4. 将非核心点分配给与其c-近邻中的核心点所在聚类相同的聚类。 5. 去除小于一定规模的聚类,并标记为噪声点。 总之,KANN-DBSCAN是一种通过使用K-近邻查询和c-近邻密度计算的改进DBSCAN算法,可以在高维数据集中更有效地发现聚类,并解决传统算法的性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值