DBScan密度聚类方法

本文详细介绍了DBSCAN密度聚类算法的四个关键步骤:计算两点之间距离及相邻条件判断、聚合相邻的点统计聚类数目、扩充聚类点以及整体的DBSCAN算法实现。内容涵盖欧几里得距离、邻域范围内的样本点统计、噪声点判断和簇的扩充等核心概念。
摘要由CSDN通过智能技术生成

第1关:两点之间距离及相邻条件判断

任务描述

本关任务:编写一个能计算点与点之间距离并判断其是否相邻的算法。 ####相关知识 为了完成本关任务,你需要掌握:1.欧几里得距离公式;2.bool类型返回值。 #####欧几里得距离公式 聚类分析的关键步骤时判断两点是否相邻,为了简便运算,我们使用欧几里得距离公式作为运算介质。上一实验已经进行了距离公式的编写,这里再回顾一下。

算法代码如下:

 
  1. return math.sqrt(np.power(a - b, 2).sum())
bool类型返回

经过先前实验,我们已经了解到函数的返回值,这次来编写一个简短的返回bool类型值的函数。

算法代码如下:

 
  1. return Distance(a, b) < eps
编程要求

根据提示,在右侧编辑器补充代码,计算并输出距离样本最近的簇中心索引值。 经过上一实训,我们了解了如何计算两点之间的距离,为了简便运算,这里我们选择欧氏距离作为标准。 1)主函数将传聚类中心点的值至子函数; 2)以样本点为中心,计算样本点到各个聚类中心的距离; 3)找出样本距离最短的聚类中心点,并添加至索引号; 4)第一次聚类划分之后,将聚类点的平均值重新作为聚类中心点; 5)重新整个流程,精确聚类结果。

测试说明

平台会对你编写的代码进行测试: 测试输入:

 
  1. 1,2
  2. 3,9
  3. 2

预期输出:

 
  1. 7.280109889280518
  2. False

测试输入:

 
  1. 1,2
  2. 4,6
  3. 6

预期输出:

 
  1. 5.0
  2. True

开始你的任务吧,祝你成功!

import numpy as np
import math

def Distance(a, b):
    """
    输入:向量A, 向量B
    输出:两个向量的欧式距离
    """
    #   请在此添加实现代码     #
    #********** Begin *********#
    return math.sqrt(np.power(a-b,2).sum())
    #********** End ***********#

def Eps_Neighbor(a, b, eps):
    """
    输入:向量A, 向量B
    输出:是否在eps范围内
    """
    #********** Begin *********#
    return Distance(a,b) < eps
    #********** End ***********#

第2关:聚合相邻的点,统计聚类数目

任务描述

本关任务:

  1. 编写函数来计算在样本eps半径范围内的样本点个数;
  2. 编写函数来计算每个类别的样本点数目。
相关知识

为了完成本关任务,你需要掌握:1.查找eps范围内的样本点的id;2.利用列表统计样本点个数。

查找eps范围内的样本点的id

在上一小节中,我们已经学会了如何计算两个点之间的欧氏距离,本节我们将通过上一小节的函数计算在每个样本点eps半径范围内的样本点id。通过编写Region_Query函数ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值