DBSCAN算法的Java实现

2012-11-12

  DBSCAN是一种基于密度的聚类算法,它的基本原理就是给定两个参数,ξ和minp,其中 ξ可以理解为半径,算法将在这个半径内查找样本,minp是一个以ξ为半径查找到的样本个数n的限制条件,只要n>=minp,查找到的样本点就是核心样本点,算法的具体描述见参考文件1,下边是这个算法的java实现:

  首先定义一个Point类,代表样本点

  <!--[endif]-->

  package com.sunzhenxing;

  public class Point {

  private int x;

  private int y;

  private boolean isKey;

  private boolean isClassed;

  public boolean isKey() {

  return isKey;

  }

  public void setKey(boolean isKey) {

  this.isKey = isKey;

  this.isClassed=true;

  }

  public boolean isClassed() {

  return isClassed;

  }

  public void setClassed(boolean isClassed) {

  this.isClassed = isClassed;

  }

  public int getX() {

  return x;

  }

  public void setX(int x) {

  this.x = x;

  }

  public int getY() {

  return y;

  }

  public void setY(int y) {

  this.y = y;

  }

  public Point(){

  x=0;

  y=0;

  }

  public Point(int x,int y){

  this.x=x;

  this.y=y;

  }

  public Point(String str){

  String[] p=str.split(",");

  this.x=Integer.parseInt(p[0]);

  this.y=Integer.parseInt(p[1]);

  }

  public String print(){

  return "<"+this.x+","+this.y+">";

  }

  }

  然后定义一个工具类,为算法的实现服务:

  package com.sunzhenxing;

  import java.io.BufferedReader;

  import java.io.FileReader;

  import java.io.IOException;

  import java.util.*;

  public class Utility {

  /**

  * 测试两个点之间的距离

  * @param p 点

  * @param q 点

  * @return 返回两个点之间的距离

  */

  public static double getDistance(Point p,Point q){

  int dx=p.getX()-q.getX();

  int dy=p.getY()-q.getY();

  double distance=Math.sqrt(dx*dx+dy*dy);

  return distance;

  }

分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com