1、直接调用sklearn模块

from sklearn.cluster import DBSCAN
dbsc = DBSCAN(eps=0.5, min_samples=15).fit(data)
labels = dbsc.labels_ #聚类得到每个点的聚类标签 -1表示噪点

2、算法

def dist(a, b):"""计算两个向量的距离:param a: 向量1:param b: 向量2:return: 距离"""return m.sqrt(np.power(a-b, 2).sum())def neighbor_points(data, pointId, radius):"""得到邻域内所有样本点的Id:param data: 样本点:param pointId: 核心点:param radius: 半径:return: 邻域内所用样本Id"""points = []for i in range(len(data)):if dist(data[i, 0: 2], data[pointId, 0: 2]) < radius:points.append(i)return np.asarray(points)def to_cluster(data, clusterRes, pointId, clusterId, radius, minPts):"""判断一个点是否是核心点,若是则将它和它邻域内的所用未分配的样本点分配给一个新类若邻域内有其他核心点,重复上一个步骤,但只处理邻域内未分配的点,并且仍然是上一个步骤的类。:param data: 样本集合:param clusterRes: 聚类结果:param pointId:  样本Id:param clusterId: 类Id:param radius: 半径:param minPts: 最小局部密度:return:  返回是否能将点PointId分配给一个类"""points = neighbor_points(data, pointId, radius)points = points.tolist()q = queue.Queue()if len(points) < minPts:clusterRes[pointId] = NOISEreturn Falseelse:clusterRes[pointId] = clusterIdfor point in points:if clusterRes[point] == UNASSIGNED:q.put(point)clusterRes[point] = clusterIdwhile not q.empty():neighborRes = neighbor_points(data, q.get(), radius)if len(neighborRes) >= minPts:                      # 核心点for i in range(len(neighborRes)):resultPoint = neighborRes[i]if clusterRes[resultPoint] == UNASSIGNED:q.put(resultPoint)clusterRes[resultPoint] = clusterIdelif clusterRes[resultPoint] == NOISE:clusterRes[resultPoint] = clusterIdreturn Truedef dbscan(data, radius, minPts):"""扫描整个数据集,为每个数据集打上核心点,边界点和噪声点标签的同时为样本集聚类:param data: 样本集:param radius: 半径:param minPts:  最小局部密度:return: 返回聚类结果, 类id集合"""clusterId = 1nPoints = len(data)clusterRes = [UNASSIGNED] * nPointsfor pointId in range(nPoints):if clusterRes[pointId] == UNASSIGNED:if to_cluster(data, clusterRes, pointId, clusterId, radius, minPts):clusterId = clusterId + 1return np.asarray(clusterRes), clusterId

DBSCAN基于密度聚类算法相关推荐

  1. 基于密度聚类算法的改进

    基于密度算法的改进 本篇博客来自我的github小项目,如果对您有帮助,希望您前去点星 ! 使用基于密度的聚类算法,进行高维特征的聚类分析,从高维数据中提取出类似的有用信息,从而简化了特征数量,并且去 ...

  2. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( K-Means 方法缺陷 | 基于密度聚类原理及概念 | ε-邻域 | 核心对象 | 直接密度可达 | 密度可达 | 密度连接 )

    文章目录 I . K-Means 算法在实际应用中的缺陷 II . K-Means 初始中心点选择不恰当 III . K-Means 优点 与 弊端 IV . 基于密度的聚类方法 V . 基于密度的聚 ...

  3. DBSCAN: 基于密度对空间含噪声数据中不规则形状进行聚类

    聚类算法是机器学习中使用频率较高的无监督学习方法,不需要样本标签,就可以将其进行分类,常常作为其他学习任务的前期粗加工.但是原始聚类算法在面对含有噪声或形状非凸的数据分布时表现较差,于是有研究人员提出 ...

  4. 密度聚类算法DBSCAN实战及可视化分析

    密度聚类算法DBSCAN实战及可视化分析 目录 密度聚类算法DBSCAN实战及可视化分析 DBSCAN实战及聚类效果可视化 构建分类算法获得预测推理能力 DBSCAN实战及聚类效果可视化 DBSCAN ...

  5. 机器学习之密度聚类算法

    基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定,以数据集在空间分布上的稠密程度为依据进行聚类,即只要一个区域中的样本密度大于某个阈值,就把它划入与之相近的簇中. 密度聚类从样本密度的角度 ...

  6. 机器学习实战——密度聚类算法

    机器学习实战--密度聚类算法 1 密度聚类 2 sklearn中的实现 1 密度聚类 密度聚类假设聚类结构能够通过样本分布的密集程度确定,通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接 ...

  7. 基于 CFSFDP 聚类算法的电信客户价值分析

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 电信行业是典型的数据密集型行业,只有正确地分析用户数据,发现更多商机,做出正确的决策,从而更好的向用 ...

  8. 基于密度聚类的新闻热点发现实现步骤

    由于网络新闻的复杂性.冗余性.更新和传播的快速性等,都给人们快速.准确地获取自己所需的关键信息带来了困难,也不利于网络舆情的监控,因此网络新闻热点发现已成舆情监控的重点. 基于自适应参数调整的密度聚类 ...

  9. 聚类dbi指数_一种基于DBI-PD聚类算法的异常检测机制

    一种基于 DBI-PD 聚类算法的异常检测机制 丁姝郁 [期刊名称] <电脑开发与应用> [年 ( 卷 ), 期] 2015(000)002 [摘要] 分析了网络数据维数和检测准确度之间的 ...

最新文章

  1. FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架
  2. Linux系统下软件包管理四
  3. 博客园上海俱乐部Windows 7社区发布活动的奖品
  4. 【研讨课】超临界水气化制氢技术 2018-06-11
  5. 计算机基础--认识CPU
  6. 揭秘阿里云EB级大数据计算引擎MaxCompute
  7. python自定义模块的使用_python自定义模块使用说明
  8. restframework 第一天
  9. 17个品牌,113款5G手机,你选哪款?
  10. cloudsim的安装和配置
  11. linux系统notebook,RedNotebook——Linux环境桌面日记本
  12. 动感歌词制作与转换工具(QRC, KRC, LRC, KSC, TRC) 1.2.9版本
  13. ES6 阮一峰阅读学习
  14. 如何修复损坏的excel文件?
  15. 数据揭秘:中国姓氏排行榜
  16. java 短信从申请到实现(阿里云)
  17. java fly bird小游戏_Flappy Bird 小游戏
  18. 【转载】整车CAN网络介绍
  19. 【认知】眼见为实吗?也许你看到的并不是真实的:视觉恒常性
  20. 国际版阿里云短信对接

热门文章

  1. 高性价比流量卡套餐推荐--远离物联卡
  2. Apache couchdb 命令执行 (CVE-2017-12636)复现
  3. c++switch用法
  4. PICT中文乱码问题
  5. Linux下启动redis
  6. python怎么调用navicat_Navicat使用与python操作数据库
  7. 怎么看计算机的网络配置信息,如何查看电脑的网络设置
  8. 人物关系 人脸识别_「人脸识别」可以代替「人像鉴定」吗?
  9. 在vue项目或者react项目中实现图形验证码功能
  10. 使用docker-compose 编排基础分布式架构