数据挖掘实验(八):DBSCAN聚类 R语言

本文介绍了使用R语言进行DBSCAN聚类实验,包括实验目的、步骤和代码。通过设定epsilon和minPts参数,将数据点分为核点、边界点和噪声点,并利用欧式距离计算距离矩阵。实验结果展示了数据聚类后的状态。
摘要由CSDN通过智能技术生成

一、 实验目的

  1. 了解DBSCAN算法基本原理;
  2. 编写代码并实现DBSCAN算法对数据的聚簇

二、 实验步骤

  1. 采用的数据集 :R语言factoextra包里的multishapes数据集
    在这里插入图片描述
  2. 函数首先确定两个参数:
    (1)epsilon:在一个点周围邻近区域的半径
    (2)minPts:邻近区域内至少包含点的个数
    根据以上两个参数,可以把样本中的点分成三类:

核点:满足领域内的点>=minPts,则为核样本点
边界点:满足领域内的点<minPts,但是该点可由一些核点获得
噪声点:既不是核点也不是边缘点,则是不属于这一类的点

  • 用欧式距离计算点与点之间的距离矩阵disMatrix
  • 为数据集添加visited列,0表示未访问,1表示访问过
  • 判断点的类型存放到data_N
  • 删除噪声点存放到data_C
  • 重新计算距离,合并有交集的领域
  • 为不同类型的点标签
  • 绘图

三、 实验代码

library(factoextra)
library(ggplot2)

data<-data.frame(multishapes[,1:2])

ggplot(data,aes(x,y))+geom_point()

#主函数
DBSCAN = function(data,eps,MinPts){
   

rows = nrow(data)
disMatrix<-as.matrix(dist(data, method = "euclidean"))#求距离

data$visited <- rep(0,rows)
names(data)<-c("x","y","visited")

data_N = data.frame(matrix(NA,nrow =rows,ncol=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值