返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么利用DBSCAN实现一个密度聚类算法
  • 429
分享到

Python中怎么利用DBSCAN实现一个密度聚类算法

2023-06-16 09:06:08 429人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python中怎么利用DBSCAN实现一个密度聚类算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。基于密度这点有什么好处呢?我们知道kmeans聚类算法只能处理球形的簇,也就

python中怎么利用DBSCAN实现一个密度聚类算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

基于密度这点有什么好处呢?

我们知道kmeans聚类算法只能处理球形的簇,也就是一个聚成实心的团(这是因为算法本身计算平均距离的局限)。但往往现实中还会有各种形状,比如下面两张图,环形和不规则形,这个时候,那些传统的聚类算法显然就悲剧了。

于是就思考,样本密度大的成一类呗,这就是DBSCAN聚类算法。

Python中怎么利用DBSCAN实现一个密度聚类算法

三、参数选择

上面提到了红色圆圈滚啊滚的过程,这个过程就包括了DBSCAN算法的两个参数,这两个参数比较难指定,公认的指定方法简单说一下:

半径:半径是最难指定的  ,大了,圈住的就多了,簇的个数就少了;反之,簇的个数就多了,这对我们最后的结果是有影响的。我们这个时候K距离可以帮助我们来设定半径r,也就是要找到突变点,比如:  以上虽然是一个可取的方式,但是有时候比较麻烦 ,大部分还是都试一试进行观察,用k距离需要做大量实验来观察,很难一次性把这些值都选准。

MinPts:这个参数就是圈住的点的个数,也相当于是一个密度,一般这个值都是偏小一些,然后进行多次尝试

四、DBSCAN算法迭代可视化展示

国外有一个特别有意思的网站,它可以把我们DBSCAN的迭代过程动态图画出来。

Python中怎么利用DBSCAN实现一个密度聚类算法

网址:naftaliharris[1]

Python中怎么利用DBSCAN实现一个密度聚类算法

设置好参数,点击Go! 就开始聚类了!

五、常用评估方法:轮廓系数

这里提一下聚类算法中最常用的评估方法——轮廓系数(Silhouette Coefficient):

Python中怎么利用DBSCAN实现一个密度聚类算法

计算样本i到同簇其它样本到平均距离ai,ai越小,说明样本i越应该被聚类到该簇(将ai称为样本i到簇内不相似度);

计算样本i到其它某簇Cj的所有样本的平均距离bij,称为样本i与簇Cj的不相似度。定义为样本i的簇间不相似度:bi=min(bi1,bi2,...,bik2);

说明:

  • si接近1,则说明样本i聚类合理;

  • si接近-1,则说明样本i更应该分类到另外的簇;

  • 若si近似为0,则说明样本i在两个簇的边界上;

六、用Python实现DBSCAN聚类算法

导入数据:

import pandas as pd from sklearn.datasets import load_iris # 导入数据,sklearn自带鸢尾花数据集 iris = load_iris().data print(iris)

输出:

Python中怎么利用DBSCAN实现一个密度聚类算法

使用DBSCAN算法:

from sklearn.cluster import DBSCAN  iris_db = DBSCAN(eps=0.6,min_samples=4).fit_predict(iris) # 设置半径为0.6,最小样本量为2,建模 db = DBSCAN(eps=10, min_samples=2).fit(iris)   # 统计每一类的数量 counts = pd.value_counts(iris_db,sort=True) print(counts)
Python中怎么利用DBSCAN实现一个密度聚类算法

可视化

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = [u'Microsoft YaHei']  fig,ax = plt.subplots(1,2,figsize=(12,12))  # 画聚类后的结果 ax1 = ax[0] ax1.scatter(x=iris[:,0],y=iris[:,1],s=250,c=iris_db) ax1.set_title('DBSCAN聚类结果',fontsize=20)  # 画真实数据结果 ax2 = ax[1] ax2.scatter(x=iris[:,0],y=iris[:,1],s=250,c=load_iris().target) ax2.set_title('真实分类',fontsize=20) plt.show()
Python中怎么利用DBSCAN实现一个密度聚类算法

我们可以从上面这个图里观察聚类效果的好坏,但是当数据量很大,或者指标很多的时候,观察起来就会非常麻烦。

这时候可以使用轮廓系数来判定结果好坏,聚类结果的轮廓系数,定义为S,是该聚类是否合理、有效的度量。

聚类结果的轮廓系数的取值在[-1,1]之间,值越大,说明同类样本相距越近,不同样本相距越远,则聚类效果越好。

轮廓系数以及其他的评价函数都定义在sklearn.metrics模块中,在sklearn中函数silhouette_score()计算所有点的平均轮廓系数。

from sklearn import metrics   # 就是下面这个函数可以计算轮廓系数(sklearn真是一个强大的包) score = metrics.silhouette_score(iris,iris_db)  score

结果: 0.364

看完上述内容,你们掌握Python中怎么利用DBSCAN实现一个密度聚类算法的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网Python频道,感谢各位的阅读!

--结束END--

本文标题: Python中怎么利用DBSCAN实现一个密度聚类算法

本文链接: https://lsjlt.com/news/283112.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中怎么利用DBSCAN实现一个密度聚类算法
    Python中怎么利用DBSCAN实现一个密度聚类算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。基于密度这点有什么好处呢我们知道kmeans聚类算法只能处理球形的簇,也就是...
    99+
    2023-06-16
  • Python实现DBSCAN聚类算法并样例测试
    什么是聚类算法 聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不...
    99+
    2022-06-02
    Python聚类算法 Python DBSCAN聚类算法
  • 【机器学习】DBSCAN聚类算法(含Python实现)
    文章目录 一、算法介绍二、例子三、Python实现3.1 例13.2 算法参数详解3.3 鸢尾花数据集 一、算法介绍 DBSCAN(Density-Based Spatial Clus...
    99+
    2023-10-01
    聚类 机器学习 python BBSCAN
  • Python 中怎么实现一个k-means 均值聚类算法
    Python 中怎么实现一个k-means 均值聚类算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。scikti-learn 将机器学习分为4个领域,分别是分...
    99+
    2023-06-02
  • 怎么在python中实现dbscan算法
    今天就跟大家聊聊有关怎么在python中实现dbscan算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。DBSCAN 算法是一种基于密度的空间聚类算法。该算法利用基于密度的聚类的概...
    99+
    2023-06-15
  • 利用Python如何实现K-means聚类算法
    目录前言算法原理 目标函数 算法流程  Python实现 总结 前言 K-Means 是一种非常简单的聚类算法(聚类算法都属于无监督学习)。给定固定数量的聚类和输入数据集,...
    99+
    2024-04-02
  • 如何利用python的KMeans和PCA包实现聚类算法
    如何利用python的KMeans和PCA包实现聚类算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。题目: 通过给出的驾驶员行为数据(trip.csv),对驾...
    99+
    2023-06-02
  • 密度峰值聚类算法DPC(Density Peak Clustering)理论基础与python实现
    密度峰值聚类算法DPC(Density Peak Clustering) 基于密度峰值的聚类算法全称为基于快速搜索和发现密度峰值的聚类算法(clustering by fast search and ...
    99+
    2023-09-01
    聚类 算法 python
  • Python中怎么实现一个感知器分类算法
    Python中怎么实现一个感知器分类算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。感知器算法Perceptron算法是两类(二进制)分类机器学习算法。它是一种神经网络模...
    99+
    2023-06-15
  • python中实现k-means聚类算法详解
    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近的...
    99+
    2022-06-04
    算法 详解 python
  • 10个Python实现的最频繁使用的聚类算法
    目录一、聚类二、聚类算法三、聚类算法示例1、库安装2、聚类数据集3、亲和力传播4、聚合聚类5、BIRCH6、DBSCAN7、K均值8、Mini-Batch K-均值9、均值漂移聚类1...
    99+
    2022-12-29
    Python实现聚类算法 Python常用聚类算法 Python聚类算法
  • 怎么利用java实现一个二分法算法
    这篇文章给大家介绍怎么利用java实现一个二分法算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java 二分法算法1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2、原理:将数组分为...
    99+
    2023-05-31
    java 二分法算法 ava
  • 利用python实现聚类分析K-means算法的详细过程
    K-means算法介绍   K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近...
    99+
    2024-04-02
  • 怎么在Java中利用TreeMap实现一个排序算法
    怎么在Java中利用TreeMap实现一个排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一...
    99+
    2023-05-31
    java treemap 排序算法
  • Python中怎么正确实现一个算法
    本篇文章给大家分享的是有关Python中怎么正确实现一个算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python算法具体操作代码示例:# -*- co...
    99+
    2023-06-17
  • C#中怎么利用类实现一个接口
    这篇文章给大家介绍C#中怎么利用类实现一个接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#类实现接口前面我们已经说过,接口定义不包括方法的实现部分。接口可以通过类或结构来实现。我们主要讲述通过类来实现接口。用类来...
    99+
    2023-06-17
  • python利用K-Means算法实现对数据的聚类案例详解
    目的是为了检测出采集数据中的异常值。所以很明确,这种情况下的簇为2:正常数据和异常数据两大类 1、安装相应的库 import matplotlib.pyplot as plt # 用于可视化 from skle...
    99+
    2022-06-02
    python K-Means算法聚类 python K-Means算法
  • K-means聚类算法介绍与利用python实现的代码示例
    聚类 今天说K-means聚类算法,但是必须要先理解聚类和分类的区别,很多业务人员在日常分析时候不是很严谨,混为一谈,其实二者有本质的区别。 分类其实是从特定的数据中挖掘模式,作出判断的过程。比如Gmail...
    99+
    2022-06-04
    示例 算法 代码
  • 使用Python在实现一个梯度下降算法
    这期内容当中小编将会给大家带来有关使用Python在实现一个梯度下降算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-06
  • JavaScript中怎么实现一个图片相似度算法
    这篇文章给大家介绍JavaScript中怎么实现一个图片相似度算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。特征提取算法为了便于理解,每种算法都会经过“特征提取”和“特征比对”两个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作