当前位置: 首页 > news >正文

【聚类】DBCAN聚类

OPTICS是基于DBSCAN改进的一种密度聚类算法,对参数不敏感。当需要用到基于密度的聚类算法时,可以作为DBSCAN的一种替代的优化方案,以实现更优的效果。

原理

基于密度的聚类算法(1)——DBSCAN详解_dbscan聚类_root-cause的博客-CSDN博客

重点关照

DBSCAN的优缺点及应用场景:

 (1)DBSCAN的优点:
1) 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感,和BIRCH聚类一样。
3) 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
(2)DBSCAN的缺点:
1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
3) 调参稍复杂,对参数比较敏感。主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响

python实现

原始数据

from sklearn.cluster import DBSCAN
#from sklearn import metrics
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['STKaiTi'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号# 产生数据
centers = [[1, 1], [-1, -1], [1, -1]]
#make_blobs函数是为聚类产生数据集,产生一个数据集和相应的标签
X,ltrue=make_blobs(n_samples=750,centers=centers,cluster_std=0.4,random_state=0)
X = StandardScaler().fit_transform(X)
# 画出原始的数据点
plt.figure(0, figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1],c = ltrue)
plt.show()

DBSCAN聚类 

# 调用DBSCAN
model = DBSCAN(eps=0.3, min_samples=10)
db=model.fit(X)
labels = db.labels_
#-1表示那些噪声点
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
print(n_clusters_)
print(set(labels))
# 统计每一类的数量
import pandas as pd
counts = pd.value_counts(model.fit_predict(X),sort=True)
print(counts)plt.figure(1, figsize=(8, 6))
plt.scatter( X[:, 0], X[:, 1],c=db.labels_)
plt.show()

 

图中黑色的是异常点,在取参数的过程中发现对参数比较敏感,一不小心就不对了 

http://www.lryc.cn/news/154147.html

相关文章:

  • 通过安装cpolar内网穿透在Kali上实现SSH远程连接的步骤指南
  • UDP和TCP协议报文格式详解
  • STM32+UART串口+DMA收发
  • 安全基础 --- js的闭包和this属性
  • 【C语言每日一题】08. 字符三角形
  • 如何打war包,并用war包更新服务器版本
  • uniApp webview 中调用底座蓝牙打印功能异常
  • Mac下安装Jmeter及其配置
  • js+html实现打字游戏v1
  • Java on VS Code 8月更新|反编译器用户体验优化、新 Maven 项目工作流、代码高亮稳定性提升
  • 划分Vlan时需要注意的问题
  • 【广州华锐互动】利用AR远程指导系统进行机械故障排查,实现远程虚拟信息互动
  • Spring工具类--CollectionUtils的使用
  • Node.js 应用的御用品: Node.js 错误处理系统
  • K210-CanMV IDE开发软件
  • 0301yarnmapredude入门-hadoop-大数据学习
  • 大数据课程K15——Spark的TF-IDF计算Term权重
  • 【C语言】字符函数,字符串函数,内存函数
  • Spring MVC:域对象共享数据
  • Vue框架--Vue中的计算属性
  • 面试题-React(八):React如何实现插槽?
  • 【前端demo】动态赋值CSS
  • BlockUI专栏目录
  • K8S获取连接token
  • CountDownLatch原理-(主线程等待子线程结束再执行)
  • mybatis源码学习-3-解析器模块
  • 解决微信小程序recycle-view使用百分比单位控制宽高时出现的内容溢出问题
  • 如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?
  • 在 Node.js 中使用 MongoDB 事务
  • IntelliJ IDEA的远程开发(Remote Development)