Sklearn 机器学习 数据聚类 DBSCAN聚类算法的异常点
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖
本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
Sklearn 机器学习 | DBSCAN 聚类算法中的异常点识别与应用实战
在无监督学习中,DBSCAN(Density-Based Spatial Clustering of Applications with Noise) 是一种基于密度的聚类算法,不仅支持发现任意形状的簇,还可以自动识别“异常点”——也称为“噪声点(Noise)”。
本文将从 算法原理、Sklearn 实战代码、异常点识别与可视化 到 参数调优技巧 全面讲解 DBSCAN 的核心使用方法。读完本文,你将掌握一种强大且实用的异常点检测工具,适用于复杂数据结构分析任务。
🧩 一、什么是 DBSCAN 聚类算法?
核心思想
DBSCAN 的核心理念是通过 密度联系 来划分数据簇,具体由两个关键参数控制:
eps
:邻域半径,表示一个点的密度半径范围;min_samples
:最小邻居数,表示成为“核心点”所需的最少邻居数。
工作原理详解
- 任取一个数据点 A,查找其
eps
半径内的所有点(包括 A 本身); - 如果邻居数 ≥
min_samples
,则 A 为核心点; - 找出所有从核心点“直接密度可达”的点(即
eps
范围内的点); - 递归扩展,找出从核心点“密度可达”(包括间接路径)的一系列点,构成一个聚类;
- 无法从任意核心点出发密度可达的点,被标记为
-1
,称为噪声点(Noise),即异常点。
⚠️ 注:术语中“直接密度可达”表示某点落在核心点的 eps
邻域内,而“密度可达”是指从核心点出发,经一系列核心点跳转而可达的路径。
📊 二、DBSCAN 聚类实战:数据准备与建模
我们使用 make_moons
数据集,它由两个半圆构成,常用于测试聚类算法在非凸形状数据中的效果。
导入库:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import DBSCAN