dbscan用 java代码_聚类算法之DBScan(Java实现)[转]

package orisun;

import java.io.File;

import java.util.ArrayList;

import java.util.Vector;

import java.util.Iterator;public classDBScan {double Eps=3; //区域半径

int MinPts=4; //密度//由于自己到自己的距离是0,所以自己也是自己的neighbor

public Vector getNeighbors(DataObject p,ArrayListobjects){

Vector neighbors=new Vector();

Iterator iter=objects.iterator();while(iter.hasNext()){

DataObject q=iter.next();double[] arr1=p.getVector();double[] arr2=q.getVector();int len=arr1.length;if(Global.calEditDist(arr1,arr2,len)<=Eps){ //使用编辑距离//if(Global.calEuraDist(arr1, arr2, len)<=Eps){//使用欧氏距离//if(Global.calCityBlockDist(arr1, arr2, len)<=Eps){//使用街区距离//if(Global.calSinDist(arr1, arr2, len)<=Eps){//使用向量夹角的正弦

neighbors.add(q);

}

}returnneighbors;

}public int dbscan(ArrayListobjects){int clusterID=0;

boolean AllVisited=false;while(!AllVisited){

Iterator iter=objects.iterator();while(iter.hasNext()){

DataObject p=iter.next();if(p.isVisited())continue;

AllVisited=false;

p.setVisited(true); //设为visited后就已经确定了它是核心点还是边界点

Vector neighbors=getNeighbors(p,objects);if(neighbors.size()

p.setCid(-1); //cid初始为0,表示未分类;分类后设置为一个正数;设置为-1表示噪声。

}else{if(p.getCid()<=0){

clusterID++;

expandCluster(p,neighbors,clusterID,objects);

}else{int iid=p.getCid();

expandCluster(p,neighbors,iid,objects);

}

}

AllVisited=true;

}

}returnclusterID;

}private void expandCluster(DataObject p, Vectorneighbors,int clusterID,ArrayListobjects) {

p.setCid(clusterID);

Iterator iter=neighbors.iterator();while(iter.hasNext()){

DataObject q=iter.next();if(!q.isVisited()){

q.setVisited(true);

Vector qneighbors=getNeighbors(q,objects);if(qneighbors.size()>=MinPts){

Iterator it=qneighbors.iterator();while(it.hasNext()){

DataObject no=it.next();if(no.getCid()<=0)

no.setCid(clusterID);

}

}

}if(q.getCid()<=0){ //q不是任何簇的成员

q.setCid(clusterID);

}

}

}public static voidmain(String[] args){

DataSource datasource=newDataSource();//Eps=3,MinPts=4

datasource.readMatrix(new File("/home/orisun/test/dot.mat"));

datasource.readRLabel(new File("/home/orisun/test/dot.rlabel"));//Eps=2.5,MinPts=4//datasource.readMatrix(new File("/home/orisun/text.normalized.mat"));//datasource.readRLabel(new File("/home/orisun/text.rlabel"));

DBScan ds=newDBScan();int clunum=ds.dbscan(datasource.objects);

datasource.printResult(datasource.objects,clunum);

}

}

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

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

相关文章

图文并茂——使用xfire编写webservice,并通过C#调用

.首先建立一个web service工程&#xff1a;点击finish之后&#xff0c;myeclipse自动帮你生成services.xml以及web应用目录结构&#xff0c;其中的services.xml是你导出服务的配置文件&#xff0c;注意在WEB-INF/web.xml文件中配置了xfire自己的servlet. <servlet><se…

如何在 ASP.Net Core 中使用 Serilog

记录日志的一个作用就是方便对应用程序进行跟踪和排错调查&#xff0c;在实际应用上都是引入 日志框架&#xff0c;但如果你的 日志文件 包含非结构化的数据&#xff0c;那么查询起来将是一个噩梦&#xff0c;所以需要在记录日志的时候采用结构化方式。将日志结构化可以更容易的…

python可视化工具好用_6款Python必备的可视化工具推荐

想像阅读书本一样阅读数据流&#xff1f;这只有在电影中才有可能发生。 在现实世界中&#xff0c;企业必须使用数据可视化工具来读取原始数据的趋势和模式。尽管实际上存在着无数专门用于大数据可视化的工具&#xff0c;且它们都是既开源又专有的&#xff0c;在这其中还是有一些…

看国外女神级程序员,直播写代码一年的感悟

我第一次直播写代码是在去年七月份。我想要直播一下我在业余时间内为开源项目领域所做的工作&#xff0c;尽管在youtube上的大部分直播都是关于游戏的。我比较擅长于NodeJS的硬件库方面的工作&#xff08;尽管大部分项目都是自己的&#xff09;。并且我在youtube上曾经开启过一…

java八进制转十六进制_java-十进制、八进制、十六进制数互相转换

public class JZTurn {public static void main(String[] args) {int num2 1314521;System.out.println("十进制数:"num2);System.out.println("十进制转换二进制:"turn2(num2));System.out.println("十进制转换八进制:"turn8(num2));System.ou…

windows制作定时关机脚本_自动关机、自动打开程序… 让Windows自动执行任何操作...

文章转载于网络&#xff0c;侵删Windows 中有一个非常棒的功能&#xff0c;叫做“任务计划程序”&#xff0c;但是因为它的界面看起来有点复杂&#xff0c;导致很少有人使用它。其实对于任何人而言&#xff0c;“任务计划程序”都是非常棒的工具&#xff0c;它可以让 Windows 在…

techempower拿分系列之aspcore分析

techempower是一个Web Framework Benchmarks测试平台&#xff0c;世界上各大Web框架都参与其中&#xff0c;当然BeetleX也不例外。接下来的几篇文章中讲述aspcore使用怎样的方式在这评测中获取相对比较高的分数&#xff1b;而BeetleX使用了这些技巧之后也在是近测中获取的前10&…

对症下药教你清除电脑中的木马

特洛伊木马是一种基于远程控制的病毒程序&#xff0c;该程序具有很强的隐蔽性和危害性&#xff0c;它可以在不知情的的状态下控制或者监视用户的电脑。下面就讲讲木马经常藏身的地方和清除方法。  首先查看自己的电脑中是否有木马   1、集成到程序中   其实木马也是一个服…

mysqlbinlog工具_mysqlbinlog命令详解 Part 1-实验环境准备

前面的一些章节我们对mysqldump常用命令进行了讲解这个专题的内容为mysqlbinlog命令的详解mysqlbinlog是mySQL中用来处理binlog的工具1. MySQL二进制日志介绍服务器的binlog包含一些event这些event描述了数据库内容的状态&#xff0c;包含了数据修改&#xff0c;服务器重启等&a…

是学习Java还是Python?一张图告诉你!

Java 和 Python 一直都是两种很火很强大的编程语言&#xff0c;对于刚开始起步学习编程的同学来说&#xff0c;会迷惑且最经常问的问题是&#xff0c;我该学 Java 还是 Python&#xff0c;是不是 Python 容易学&#xff0c;或是应该先学什么编程语言等等这样的问题。作为一名 J…

Java游戏吉他英雄_《吉他英雄:现场》《摇滚乐队4》横向对比:各有所长!

《吉他英雄&#xff1a;现场》《摇滚乐队4》横向对比&#xff1a;各有所长&#xff01;2015-11-29 10:29:07来源&#xff1a;界面编辑&#xff1a;评论(0)作为摇滚游戏界两大支柱&#xff0c;最近回归的《吉他英雄&#xff1a;现场(Guitar Hero Live)》(以下简称GHL)和《摇滚乐…

_云计算学习路线图素材课件,Linux中软件安装的方式

很多初学者感觉云计算就是一个听起来比较高大上的名词&#xff0c;每次想要了解它的时候都像是雾里看花&#xff0c;迷迷糊糊看不真切&#xff0c;至于它是干什么的就更不了解了&#xff0c;其实云计算学起来在IT行业中还是比较容易上手的&#xff0c;接下来我给大家分享Linux中…

Redis集群搭建很easy

前言 哨兵模式虽然让读写分离更加高可用&#xff0c;但单台服务器由于本身的内存和CPU瓶颈&#xff0c;对于高并发和大数据业务的应用场景还是远远不能满足&#xff1b;对于这种情况&#xff0c;有点经验的小伙伴会毫不犹豫的想到集群&#xff0c;搞他好几个节点&#xff0c;负…

您是否也想过让你的电脑百毒不侵呢!

您是否也想过让你的电脑百毒不侵呢<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />我们的防火墙是不是经常有人来***你XXX端口呢?如果关掉相应没有用处的端口不就好了吗? 一般来说&#xff0c;我们采用一些功能强大的反黑软件…

3dsmax子菜单无法选择_3DsMax—用平面图片制作3D模型

最终效果本篇为图文教程&#xff0c;已经将用平面图片制作3D模型视频教程放到3dsmax学习网中&#xff0c;需要看视频教程的请到3DsMax学习网(www.dddmax.cn)教程中观看。图文教程01先在网上找一张简单的素材图片&#xff0c;如图所示。(图片最好背景颜色和图形颜色2种颜色)02用…

python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

一、基础入门1.1什么是爬虫爬虫(spider&#xff0c;又网络爬虫)&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。从技术层面来说就是 通过程序模拟浏览器请求站点的行为&#xff0c;把站点返回的HTML代码/JSON数据/二进制数据(图片、视频…

国庆中秋活动——读完这两套书,宝宝就变小小物理学家了!

通知&#xff01;通知&#xff01;通知&#xff01;&#xff01;&#xff01;玩酷屋十一黄金优惠限时限量秒杀活动&#xff0c;能抢到算你厉害&#xff1a;1、活动期间 2017/10/02 22:30 ——2017/10/05 22:302、【宝宝的物理学】第一辑 原价&#xff1a;189元&#xff0c;秒…

java的正则表达式 CPU_小心踩雷!一个小小的正则表达式竟把CPU拖垮......

原标题&#xff1a;小心踩雷&#xff01;一个小小的正则表达式竟把CPU拖垮......“前几天线上一个项目监控信息突然报告异常&#xff0c;上到机器上后查看相关资源的使用情况&#xff0c;发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具&#xff0c;我们导出了出问题…

欲善其事,先利其器 | IDCF第6期DevOps案例研究回顾(附视频)

2021年&#xff0c;会有哪些“意想不到”在等待我们&#xff1f;2021年&#xff0c;会有哪些“变与不变”在等待我们&#xff1f;这些&#xff0c;都未可知。借假修真&#xff0c;唯一可知的是过去有哪些值得我们借鉴与学习&#xff0c;并帮助我们更好前进的经验。2021年开端&a…

ArcGIS中的投影和坐标转换

ArcGIS中的投影和坐标转换 1 ArcGIS中坐标系统的定义 一般情况下地理数据库&#xff08;如Personal GeoDatabase的 Feature DataSet 、Shape File等&#xff09;在创建时都具有空间参考的属性&#xff0c;空间参考定义了该数据集的地理坐标系统或投影坐标系统&#xff0c;没有…