聚类算法及python实现——DBSCAN

聚类算法及python实现——DBSCAN

基于密度聚类,无需给定聚类个数,且最终聚类数不确定
(1)核心点,在半径Eps内有超过MinPts数目的点
(2)边界点,在半径Eps内点的数量小于MinPts
(3)噪音点,不是核心点也不是边界点
在这里插入图片描述
图片来源于中国大学MOOC,北京理工大学Python机器学习应用

步骤

step1:标记所有点,核心点、边界点和噪音点
step2:删除噪音点
step3:距离在Eps内的所有核心点之间赋予一条边
step4:每组连通的核心点形成一个类
step5:将每个边界点指派到一个与之关联的核心点的类中(某个核心点的半径范围内)

python代码

import numpy as np
from sklearn.cluster import DBSCAN

db = DBSCAN(eps = 0.01,min_samples = 20,metric = 'euclidean')
label = db.fit(data)
labels = label.labels # 每个数据的类标签 

DBSCAN主要参数
eps:半径,即两个样本被看作邻居节点的最大距离
min_samples:类中的样本数MinPts
metric:距离计算方式

优势

(1)聚类速度快,能处理噪声点,解决数据集非凸集
(2)与K-means相比,无需输入聚类个数
(3)类的形状没有偏移
(4)指定多大范围外的点为噪声

缺陷

(1)数据量增加,消耗内存
(2)密度不均匀,选取MinPts和Eps困难
(3)聚类效果依赖距离公式的选取,常用欧式距离,若多维数据,存在“维数灾难”

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值