基于密度的聚类算法DBSCAN.doc

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于密度的聚类算法DBSCAN

基于密度的聚类算法DBSCAN的分析与实现 摘 要 DBSCAN是一个比较有代表性的基于密度的聚类算法。它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分成为簇,并可在有“噪声”的空间数据库中发现任意形状的聚类。同样,DBSCAN算法也存在一些缺点。本文对DBSCAN聚类算法进行程序实现,然后对程序和算法进行定量和定性的验证与分析,通过结果分析总结出DBSCAN的优缺点,同时对DBSCAN的一种改进方法进行程序实现。 关键字:数据挖掘;聚类;密度聚类;DBSCAN 目 录 1 聚类分析概述 1 2 聚类算法的分类 1 3 经典的基于密度的聚类算法DBSCAN 2 4 DBSCAN算法的具体实现 3 4.1目标实现功能 3 4.2算法的具体流程图 3 4.3数据的输入 4 4.4程序的初始化 4 4.5 DBSCAN命名空间内的类 5 5 DBSCAN算法的测试结果分析 5 5.1定量测试 6 5.2定性验证 8 6 算法的优缺点 10 7 算法的改进 11 8 总结 11 参考文献 12 附 录 13 附录1 DBSCAN实现相关程序及数据 13 1)Form1.cs 13 2)DBSCAN.cs 19 3)DataInput.mdb 24 附录2 k-dist算法相关程序 35 1)dataMan.h 35 2)draw.h 35 3)drawDoc.h 36 4)drawView.h 37 5)MainFrm.h 39 6)Point.h 40 7)Resource.h 41 8)stdafx.h 42 9)targetver.h 43 10)dataMan.cpp 44 11)draw.cpp 46 12)drawDoc.cpp 50 13)drawView.cpp 53 14)MainFrm.cpp 60 15)Point.cpp 63 16)stdafx.cpp 64 聚类分析概述 聚类分析是数据挖掘的重要课题之一。所谓聚类,就是将数据对象分成多个类或簇.使得在同一类或簇的对象之间具有较高的相似度.而不同类或簇的对象之间具有较大的差异度。聚类与分类的不同是数据中要划分的类是事先未知的,类的形成完全是数据驱动的,属于一种无师指导的学习方法。 聚类分析已经广泛地应用到诸多领域中,包括模式识别、数据分析、图像处理、推荐系统以及市场研究.通过聚类,人们能够识别密集的和稀疏的区域,因而发现全局的分布模式,以及数据属性之间有趣的相互关系。聚类算法还可以作为数据挖掘中其他算法的一个预处理步骤。 聚类算法的分类 聚类分析的算法可以分为划分法(Partitioning Methods)、层次法(Hierarchical Methods)、基于密度的方法(density-based methods)、基于网格的方法(grid-based methods)、基于模型的方法(Model-Based Methods   1. 划分法(partitioning methods):给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,KN。而且这K个分组满足下列条件:(1) 每一个分组至少包含一个数据纪录;(2)每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。使用这个基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、CLARANS算法;   2. 层次法(hierarchical methods):这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法有:BIRCH算法、CURE算法、CHAMELEON算法等;   3. 基于密度的方法(density-based methods):基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等;   4. 基于网格的方法(grid-based methods):这种方法首先将数据空间划分成为有限个单元(ce

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档