首页 > 编程语言 >机器学习之DBSCAN算法自动分类

机器学习之DBSCAN算法自动分类

时间:2025-01-15 19:33:14浏览次数:3  
标签:DBSCAN 机器 邻域 db eps 算法 聚类

机器学习之DBSCAN算法自动分类

目录

1 DBSCAN算法


1.1 概念

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,基于密度的空间聚类应用)是一种基于密度的数据聚类算法。它的核心思想是:对于一个聚类而言,其中的任意两点都是“密度相连”的,也就是说,从这两点中的任何一个点出发,通过一定的邻域范围,都能找到另一个点。是一种基于密度的数据聚类算法。DBSCAN算法不需要预先指定簇的数量,能够识别出任意形状的簇,并且能够处理噪声和异常点。

1.2 关键概念:

  1. 核心点(Core Point):在给定的邻域半径ε内,如果一个点的邻域中至少要有MinPts个点,那么这个点就是核心点。
  2. 边界点(Border Point):在给定的邻域半径ε内,如果一个点的邻域中点的数量小于MinPts,但它落在某个核心点的邻域内,这个点就是边界点。
  3. 噪声点(Noise Point):既不是核心点也不是边界点的点。

1.3 算法步骤:

  1. 初始化:将所有点标记为未访问。
  2. 寻找核心点:随机选择一个未访问的点p,如果p是一个核心点,则开始一个新聚类。
  3. 扩展聚类:找出所有与p密度相连的点,这些点形成一个聚类。这个过程中可能会发现更多的核心点,重复这一步直到没有新的核心点可以添加到当前聚类中。
  4. 标记噪声点:所有未标记为核心点或边界点的点被认为是噪声点。
  5. 重复:重复步骤2到4,直到所有点都被访问过。

1.4 函数和参数

  • 函数导入
from sklearn.cluster import DBSCAN
  • 主要参数
    • ε(epsilon):邻域半径。
      即给定一个点,以这个点为中心,半径为eps的球体内包含的点是它的邻域。eps的大小决定了点与点之间被认为是密度相连的标准。如果eps太小,则许多点将被视为噪声或边界点;如果eps太大,则可能会导致多个簇合并成一个簇
    • min_samples(最小样本数):用于确定一个点是否为核心点。一个点如果在其eps邻域内至少要有min_samples个点(包括这个点本身),则这个点是核心点。min_samples的大小影响了簇的密度。

选择合适的eps和min_samples参数是DBSCAN算法成功的关键

1.5 优缺点

  • 优点:
    • 不需要预先指定聚类个数。
    • 可以发现任何形状的聚类。
    • 能够识别出噪声点。
  • 缺点:
    • εMinPts的选取敏感。
    • 当聚类密度不均匀时,效果可能不佳。

DBSCAN算法在空间数据库和地理信息系统等领域有广泛的应用,因为它能够处理具有噪声和任意形状的数据集。在使用DBSCAN时,合理选择参数对于算法的性能至关重要。

2 实际测试

2.1 部分数据展示

对红酒类型进行分类
在这里插入图片描述

2.2 代码测试

明显可以看到,不同参数,结果不同
代码展示:

from sklearn.cluster import DBSCAN
import pandas as pd
from sklearn import metrics

beer = pd.read_table('data.txt',sep = ' ',encoding='utf-8',engine='python')
x = beer[['calories','sodium','alcohol','cost']]


db = DBSCAN(eps=20,min_samples=2).fit(x)
labels = db.labels_
beer['cluster_db'] = labels
beer.sort_values('cluster_db')
score = metrics.silhouette_score(x,beer.cluster_db)
print(f'eps=20,min_samples=2:{score}')
db = DBSCAN(eps=15,min_samples=2).fit(x)
labels = db.labels_
beer['cluster_db'] = labels
beer.sort_values('cluster_db')
score = metrics.silhouette_score(x,beer.cluster_db)
print(f'eps=20,min_samples=2:{score}')

运行结果:
在这里插入图片描述
调试查看分类情况
在这里插入图片描述

标签:DBSCAN,机器,邻域,db,eps,算法,聚类
From: https://blog.csdn.net/m0_64588135/article/details/145160471

相关文章

  • 机器学习之支持向量机SVM及测试
    目录1支持向量机SVM1.1概念1.2基本概念1.3主要特点1.4优缺点1.5核函数1.6常用的核函数1.7函数导入1.8函数参数2实际测试2.1二维可视化测试代码2.2多维测试1支持向量机SVM1.1概念支持向量机(SupportVectorMachine,简称SVM)是一种二分类模型,它的基本......
  • AIGC视频生成算法/模型总结
    这里,我们汇总前面完成的工作(图像生成方面的研究),总结近两年来突出的视频生成算法/模型,并展望未来的工作计划(视频生成)。文章目录前情提要——图像生成后续介绍——视频生成2023年进展2024年进展前情提要——图像生成此前,我们深入钻研图像生成领域,对一系列关键......
  • 算法题(36):合并区间
    审题:需要把区间兼容的区间合并起来,并存入二维数组中返回思路:由于数据是乱序的,我们直接进行判断会很麻烦,所以我们先对区间的左边界进行升序排序,这样子可以保证数据被分成一个个连续区间,只需要按顺序遍历判断即可。判断逻辑:answer二维数组作为返回数组。首先我们把第一个......
  • 机器学习中的凸函数和梯度下降法
    一、凸函数在机器学习中,凸函数和凸优化是优化问题中的重要概念,许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。1.什么是凸函数?数学定义一个函数f(x)f(x)是凸函数,当且仅当它满足以下条件:......
  • 代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中
    235.二叉搜索树的最近公共祖先题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/description/文档讲解:https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%......
  • 技术领先的基于Excel的统计学分析和机器学习软件XLSTAT®
     技术领先的基于Excel的统计学分析和机器学习软件XLSTAT® XLSTAT®是一款强大的Excel数据统计分析和机器学习插件,使您可以在Excel中轻松分析和重新格式化数据。在学术研究和私人企业业务研究中,数据是最为重要的信息来源。无论您所在的专业领域是什么,您需要强大、......
  • 算法随笔_6: 下一个排列
    上一篇:算法随笔_5:接雨水-CSDN博客题目描述如下:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr=[1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排......
  • 人工智能,机器学习和深度学习的关系
    人工智能(AI)、机器学习(ML)和深度学习(DL)是现代科技发展的三个重要领域。它们不仅在学术界引起了广泛关注,也在许多行业中得到了广泛应用。尽管它们之间有很大的重叠,但各自的定义和应用场景却有所不同。本文将深入讲解这三者的关系、主要分类、深度学习的角色、机器学习的工作流程,以及......
  • 【前端】自学基础算法 -- 25.动态规划-01背包问题
    动态规划-01背包问题简介动态规划(DynamicProgramming,简称DP)是一种解决复杂问题的方法,它将问题分解为更小、更简单的子问题,并存储这些子问题的解,以避免重复计算。动态规划通常用于优化问题,如求最大值、最小值或计数问题。动态规划的基本思想是将大问题分解为小问题,并从......
  • 2025-1-15-十大经典排序算法 C++与python
    文章目录十大经典排序算法比较排序1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序非比较排序8.计数排序9.桶排序10.基数排序十大经典排序算法十大经典排序算法可以分为比较排序和非比较排序:前者包括冒泡排序、选择排序、插......