【聚类】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()

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

相关推荐
Imxyk2 分钟前
P9244 [蓝桥杯 2023 省 B] 子串简写
数据结构·c++·算法
colus_SEU4 分钟前
SVM 面试题总结
算法·机器学习·支持向量机
INGNIGHT4 分钟前
373. 查找和最小的 k 对数字(堆priority_queue)
算法
ambition202428 分钟前
深度优先搜索(DFS)与回溯算法详解:以全排列问题为例
算法·深度优先
Omics Pro8 分钟前
马普所:生命蛋白质宇宙聚类
数据库·人工智能·算法·机器学习·数据挖掘·aigc·聚类
汀、人工智能9 分钟前
[特殊字符] 第106课:旋转图像
数据结构·算法·矩阵·数据库架构·数组·旋转图像
ulias21213 分钟前
leetcode热题 - 2
算法·leetcode·职场和发展
Ivanqhz14 分钟前
SMT(Satisfiability Modulo Theories,基于模理论的可满足性)
人工智能·算法·机器学习
游乐码21 分钟前
C#Dicitionary
算法·c#
华清远见IT开放实验室26 分钟前
AI 算法核心知识清单(深度实战版1)
人工智能·python·深度学习·学习·算法·机器学习·ai