《机器学习》——DBSCAN算法

文章目录

  • DBSCAN算法简介
  • DBSCAN算法原理
    • 核心概念
    • 聚类过程
  • DBSCAN模型
    • 模型API
    • 主要参数
    • 其他参数
  • DBSCAN算法实例
    • 实例步骤
      • 导入所需库
      • 导入数据文件
      • 传入变量
      • DBSCAN聚类分析
      • 添加数据进原数据框
      • 对聚类结果进行评分

DBSCAN算法简介

  • DBSCAN(Density - Based Spatial Clustering of Applications with Noise)是一种无监督的、基于密度的空间聚类算法,在数据挖掘和机器学习领域应用广泛。

DBSCAN算法原理

核心概念

在这里插入图片描述

聚类过程

在这里插入图片描述
在这里插入图片描述

DBSCAN模型

模型API

在这里插入图片描述

主要参数

  • eps(epsilon):
    • 定义了邻域的半径。对于一个数据点,其邻域是以该点为中心,以 eps 为半径的超球体。该参数决定了数据点之间的密度度量范围。
    • 示例:如果将 eps 设置为 0.5,那么对于每个数据点,算法会考虑在距离该点 0.5 以内的其他点作为其邻域内的点。
    • 选择该参数时,需要根据数据的分布和规模来确定。如果数据点分布较为稀疏,eps 可能需要设置得较大;如果数据点分布密集,较小的 eps 可能更合适。
  • min_samples(MinPts):
    • 表示在一个数据点的 eps 邻域内所需的最小数据点数,以将该点视为核心点。
    • 例如,将 min_samples 设置为 5,意味着如果一个点的 eps 邻域内包含的点(包括自身)少于 5 个,它就不能成为核心点。
    • 一般来说,该参数需要根据数据集的规模和噪声情况来调整。在噪声较多的数据集中,可以适当提高 min_samples 以减少噪声对聚类的影响;对于小型数据集,可能需要降低该值以避免将过多的点标记为噪声。

其他参数

  • metric:
    • 用于计算数据点之间距离的度量标准。常见的度量标准包括欧几里得距离(euclidean)、曼哈顿距离(manhattan)、余弦距离(cosine)等。
    • 示例:如果数据点表示文本的特征向量,使用余弦距离可能更合适,因为它考虑了向量的方向,而不是仅考虑欧几里得距离的大小,这样更能反映文本之间的相似性;对于普通的数值数据,欧几里得距离可能是一个不错的选择。
    • 选择合适的度量标准可以根据数据的特点和任务需求,不同的度量会导致不同的距离计算结果,进而影响聚类结果。
  • algorithm:
    • 用于计算最近邻的算法,不同的算法在性能和适用场景上有所不同。
    • 例如,可选项可能包括 auto(根据数据集自动选择)、ball_tree(使用球树算法)、kd_tree(使用 k - d 树算法)、brute_force(暴力计算,适用于小型数据集)等。
    • 在选择算法时,对于低维数据和小型数据集,brute_force 可能足够快;对于高维数据,ball_tree 或 kd_tree 可能更高效,因为它们利用了数据的结构来加速最近邻搜索。

DBSCAN算法实例

对以下数据进行聚类处理
在这里插入图片描述
数据文件:通过网盘分享的文件:data.txt
链接: https://pan.baidu.com/s/19i7j4OttyWRkX13a7TXbRQ 提取码: hm1t
–来自百度网盘超级会员v2的分享

实例步骤

  • 导入所需库
  • 导入数据文件
  • 传入变量
  • DBSCAN聚类分析
  • 添加结果进入原数据框
  • 对聚类结果进行评分

导入所需库

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

所需库可自行下载

导入数据文件

#读取文件
beer = pd.read_table('data.txt',sep=' ',encoding='utf-8',engine='python')

传入变量

#传入变量(列名)
x = beer[["calories","sodium","alcohol","cost"]]

DBSCAN聚类分析

#DBSCAN聚类分析
"""
eps:半径
min samples:最小密度【就是圆内最少有几个样本点】
Labels:分类结果【自动分类,-1为离群点】
"""
db = DBSCAN(eps=20,min_samples=2).fit(x)
labels= db.labels_

添加数据进原数据框

#添加结果至原数据框
beer['cluster_db']=labels
beer.sort_values('cluster_db')

对聚类结果进行评分

#对聚类结果进行评分"""
metrics.silhouette_score轮廓评价函数,它是聚类模型优劣的一种评估方式,可用于对聚类结果进
X:数据集scaled_cluster:聚类结果
score:非标准化聚类结果的轮系数->聚类
"""
score = metrics.silhouette_score(x,beer.cluster_db)
print(score)

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2528.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024年华为OD机试】 (C卷,100分)- 用连续自然数之和来表达整数(Java JS PythonC/C++)

一、问题描述 题目描述 一个整数可以由连续的自然数之和来表示。 给定一个整数&#xff0c;计算该整数有几种连续自然数之和的表达式&#xff0c;且打印出每种表达式。 输入描述 一个目标整数T (1 <T< 1000) 输出描述 该整数的所有表达式和表达式的个数。 如果有…

Redis--21--大Key问题解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Redis--20--大Key问题解析 一、如何发现Redis大Key1. 使用Redis命令行工具**MEMORY USAGE****RANDOMKEY****DEBUG OBJECT****SCAN命令****redis-cli 工具&#…

[操作系统] 深入理解约翰·冯·诺伊曼体系

约翰冯诺依曼&#xff08;John von Neumann&#xff0c;1903年12月28日—1957年2月8日&#xff09;&#xff0c;原名诺伊曼亚诺什拉约什&#xff08;Neumann Jnos Lajos&#xff09;&#xff0c;出生于匈牙利的美国籍犹太人数学家&#xff0c;20世纪最重要的数学家之一&#xf…

OpenCV实现Kuwahara滤波

Kuwahara滤波是一种非线性的平滑滤波技术&#xff0c;其基本原理在于通过计算图像模板中邻域内的均值和方差&#xff0c;选择图像灰度值较为均匀的区域的均值来替代模板中心像素的灰度值。以下是Kuwahara滤波的详细原理说明&#xff1a; 一、基本思想 Kuwahara滤波的基本思想…

vue项目引入阿里云svg资源图标

1&#xff1a;生成svg图标 登录阿里云官网 1.1 创建项目组 1.2 从阿里云网站上面获取喜欢的图标加入到已有的项目组 1.3 如果团队有自己的设计师&#xff0c;也可以让设计师上传自己的svg图标到阿里云指定的项目组&#xff1b; 使用的时候&#xff0c;把 资源包下载到本地项…

软件测试 —— 自动化测试(Selenium)

软件测试 —— 自动化测试&#xff08;Selenium&#xff09; 什么是SeleniumPython安装Selenium1.安装webdirver-manager2.安装Selenium 写一个简单用例CSS_SELECTOR和XPATH浏览器快速定位页面元素浏览器的前进&#xff08;forward&#xff09;&#xff0c;后退&#xff08;bac…

新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索

摘要&#xff1a;随着互联网技术的不断进步和电商行业的快速发展&#xff0c;传统电商模式已难以满足消费者日益增长的个性化和多元化需求。新垂直电商在此背景下应运而生&#xff0c;通过精准定位、用户细分以及深度社交传播策略&#xff0c;实现了用户群体的快速裂变与高效营…

Jmeter进行http接口并发测试

目录&#xff1a; 1、Jmeter设置&#xff08;1&#xff09;设置请求并发数&#xff08;2&#xff09;设置请求地址以及参数&#xff08;3&#xff09;添加结果数 2、启动看结果 1、Jmeter设置 &#xff08;1&#xff09;设置请求并发数 &#xff08;2&#xff09;设置请求地址…

有一台服务器可以做哪些很酷的事情

有一台服务器可以做哪些很酷的事情 今天我也来简单分享一下&#xff0c;这几年来&#xff0c;我用云服务器做了哪些有趣的事情。 服务器推荐 1. 个人博客 拥有个人服务器&#xff0c;你可以完全掌控自己的网站或博客。 与使用第三方托管平台相比&#xff0c;你能自由选择网站…

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;

从网络的角度来看,用户输入网址到网页显示,期间发生了什么?

步骤&#xff08;总体来看&#xff09; 浏览器根据输入网页的URL进行解析&#xff0c;解析出对应的请求方式、URL、端口等&#xff0c;生成HTTP请求报文。浏览器查询缓存&#xff0c;检查缓存是否已经存在该URL的资源&#xff0c;如果缓存命中中直接读取并显示&#xff0c;比如…

MYSQL创建表

1.要求 2.步骤 1.创建数据库: create database mydb6_product;2.使用数据库: use mydb6_product;3.创建employees表&#xff1a; create table employees(id int primary key,name varchar(50) not null, age int not null,gender varchar(10) not null default unknown&…

计算机网络的五层协议

计算机网络的五层协议 ‌计算机网络的五层协议模型包括物理层、数据链路层、网络层、传输层和应用层&#xff0c;每一层都有其特定的功能和相关的协议。‌‌1 ‌物理层‌&#xff1a;负责传输原始的比特流&#xff0c;通过线路&#xff08;有线或无线&#xff09;将数据转换为…

C语言初阶习题【30】字符串左旋

1. 题目描述——字符串左旋 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2. 思路 先思考了下如何把最前面的字符串移到后面。 思路比较简单&#xff0c;就是把第一个字符保存下来&#xf…

ESP8266固件烧录

一、烧录原理 1、引脚布局 2、引脚定义 3、尺寸封装 4、环境要求 5、接线方式 ESP8266系列模块集成了高速GPI0和外围接口&#xff0c;这可能会导致严重的开关噪声。如果某些应用需要高功率和EMI特性&#xff0c;建议在数字I/0线上串联10到100欧姆。这可以在切换电源时抑制过冲…

word-break控制的几种容器换行行为详解

word-break 属性在控制换行行为时需要根据语言判断&#xff0c;对于中文 一个字符就是一个单词&#xff0c;字符换行不影响阅读理解&#xff0c;而对于英文来说&#xff0c;多个连续的字符才会是一个单词&#xff0c;例如中文的 早 英文为 morning。 morning7个字符才算一个单词…

年后找工作需要注意的事项

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…

Flink链接Kafka

一、基于 Flink 的 Kafka 消息生产者 Kafka 生产者的创建与配置&#xff1a; 代码通过 FlinkKafkaProducer 创建 Kafka 生产者&#xff0c;用于向 Kafka 主题发送消息。Flink 执行环境的配置&#xff1a; 配置了 Flink 的检查点机制&#xff0c;确保消息的可靠性&#xff0c;支…

Windows 10 ARM工控主板连接I2S音频芯片

在Windows工控主板应用中&#xff0c;音频功能是一项基本的需求&#xff0c;USB声卡在x86/x64 Windows系统上就可直接免驱使用&#xff0c;但这些USB声卡通常不提供ARM上的Windows系统驱动。本文将介绍如何利用安装在ARM上的Windows工控主板——ESM8400的I2S接口、连接WM8960音…

机器学习实战33-LSTM+随机森林模型在股票价格走势预测与买卖点分类中的应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战33-LSTM随机森林模型在股票价格走势预测与买卖点分类中的应用。对于LSTM随机森林模型的融合应用&#xff0c;我们选择股票价格走势预测与买卖点分类作为应用场景。股票市场数据丰富且对投资者具有实际价…