• 0
  • 0
分享

  点击链接参加测试行业调查问卷,提交成功之后免费获得独家测试资料,链接:http://vote.51testing.com/


  机器学习、人工智能各类KNN算法层出不穷,DBSCAN具有强代表性,它是一个基于密度的聚类算法,最大的优点是能够把高密度区域划分为簇,能够在高噪声的条件下实现对目标的精准识别,但该算法当前已远不能满足人们对于高效率、高精准度的算法要求,由此FDBSCAN算法应运而生。

  01

  FDBSCAN聚类算法在KD-树的加持下,时间复杂度达到了O(nlogn),目标识别效率已指数级别上升。

1-1.png

  02

  Kd-树:它是一种树形结构,主要应用于多维空间关键数据的搜索。由于他的增加、删除、查询时间复杂度都是O(logn),所以才造就了FDBSCAN算法的高效率。

  想必大家对于树形结构也不是特别陌生,但是对于四维及以上的树形结构,就难以体现其具体的结构了。kd-树的三维立体空间如下图所示:

1-2.png

  03

  FDBSCAN算法的高效就体现在它使用了KD树作为自己遍历数据的工具,通过树形结构,能够最大限度的提高遍历效率。在算法执行之前,首先对待处理数据创建Kd-树,使用KD树自有的空间搜索算法来进行数据划分。可以看到整个数据划分流程图:

1-3.png

  04

  下面对FDBSCAN算法伪代码进行展示:

  FDBSCAN算法伪代码:

DBSCAN(D, eps, MinPts) 
   C = 0                                          //类别标示 
   for each unvisited point P in dataset D        //遍历 
      mark P as visited                           //已经访问 
      NeighborPts = regionQuery(P, eps)           //计算这个点的邻域     
      if sizeof(NeighborPts) < MinPts             //不能作为核心点 
         mark P as NOISE                          //标记为噪音数据 
      else                                        //作为核心点,根据该点创建一个类别 
         C = next cluster
        expandCluster(P, NeighborPts, C, eps, MinPts)    //根据该核心店扩展类别
          
expandCluster(P, NeighborPts, C, eps, MinPts)
   add P to cluster C                                     //扩展类别,核心店先加入
   for each point P' in NeighborPts                       //然后针对核心店邻域内的点,如果该点没有被访问
      if P' is not visited   
         mark P' as visited                               //进行访问
         NeighborPts' = regionQuery(P', eps)              //如果该点为核心点,则扩充该类别
         if sizeof(NeighborPts') >= MinPts
            NeighborPts = NeighborPts joined with NeighborPts'
      if P' is not yet member of any cluster              //如果邻域内点不是核心点,并且无类别,比如噪音数据,则加入此类别
      add P' to cluster C
          
regionQuery(P, eps)                                       //计算邻域
      return all points within P's eps-neighborhood
 kdtree (list of points pointList, int depth) {
        var tree_node node; 
        node.location := median; 
        node.leftChild := kdtree(points in pointList before median, depth+1); 
        node.rightChild := kdtree(points in pointList after median, depth+1); 
        return node; 
}

  05

  机器学习、深度学习、图像识别、人工智能、大数据、区块链、互联网+等各种新兴技术层出不穷,人们对于算法的效率、精度要求也是越来越严格。各位大佬们,传统DBSCAN聚类算法对于一个高分辨率,数以千百万级的像素点的图像来说,是远远不够的,那就让FDBSCAN算法来助你一臂之力吧!



作者:樊松松    

来源:http://www.51testing.com/html/71/n-7793571.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、自动化简介1、自动化测试概念:自动化的概念是一个动态发展过程。过去,人们对自动化的理解或者说自动化的功能目标是以机械的动作代替人力操作,自动地完成特定的作业。2、什么样的项目适合做自动化测试:一般情况下,只要满足如下三个情况就可以开展自动化测试软件需求变更不频繁、项目周期较长、自动化测试脚本可重复使用3、python+selenium自动化测试环境搭建步骤python+selenium自动化测试环境包括四个部分:python、selenium、chrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器和火狐浏览器(1...
            0 0 1345
            分享
          •   据报道,皮尤研究中心的一项调查显示,Twitter的用户们仍然在使用这个社交媒体平台,但自从去年年底埃隆·马斯克完成对该公司的收购后,在上面发帖的人正在变得越来越少。  当地时间周三,这份调查的作者表示:“研究中心对该网站用户实际行为的新分析发现,马斯克收购前最活跃的用户(按推文量排序为前20%的用户),在收购后的几个月里出现了明显的发帖量下降趋势。在收购完成之后,这些用户每月的平均推文数量下降了约25%。”  此外,调查显示,在过去一年中使用过Twitter的美国成年人中,约有60%的人表示他们最近已经中断了这项服务,四分之一的人表示他们一年后不会再使用Twitter。  新的数据凸显了...
            0 0 590
            分享
          • 作者:优测团队测试专家杨余超 背景介绍       近日优测测试服务团队在进行某客户PC端产品整体测试的过程中,也涉及到PC性能测试部分。本文将结合该项目实际经验,总结如何应用本地监控性能的方案进行PC性能测试。本文内容主要为监控CPU、内存、网络以及GPU的性能使用状况等,重点介绍监控项目的定义及相关结果判定的准则。对于性能监控的实现方法也注明了实现步骤,方便测试同仁进行参照。    CPU 内存 网络1、Windows开始菜单→Windows管理工具→性能监视器。 2、点...
            0 0 1994
            分享
          •  一、前言工欲善其事,必先利其器最近对 API 接口协作的软件研究了好久,市面上的软件都下载用了一轮,下面给大家介绍其中的最强「神器」 Apifox。Apifox 官网:apifox.cn 在介绍它之前,先说几个场景。如果你是后端、前端或测试,那一定遇到过这些场景。1.1. 场景一、后端视角:我是个 后端 ,遇到过的问题:接口定好,团队里的前端、测试小伙伴找我 要文档 。代码注释好给个 Swagger 还容易被吐槽界面丑、功能弱,不能做到 开发阶段即可并行联调 ,一开始是对接不了、调试不起来的,甚至有时候还会出现前端开发完界面,只能等后端联调。接口联调对接过程中,总会有些接口没预料...
            11 10 1660
            分享
      • 51testing软件测试圈微信