【聚类】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实现

原始数据

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聚类

python 复制代码
# 调用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()

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

相关推荐
D e re k ZH11 分钟前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
石小石Orz1 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
民乐团扒谱机2 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
青少儿编程课堂3 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:中缀表达式求值解析
c++·python·算法·bfs·信息学竞赛
无咎.lsy4 小时前
《机器学习》笔记
笔记·机器学习
武子康5 小时前
Qwen-Drive 到底是什么:4B 级 VLM 如何成为驾驶策略底座
人工智能·算法·机器学习
zh_xuan6 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长6 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai7 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
梦里寻码8 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法