- 浏览: 235080 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
清林小篆:
引用[/col[size=xx-small][/size]or ...
tomcat ssl配置以及CAS单点登录探究 -
cyxy99:
u012534143 写道我用同样的方法,同样的节点关系,为什 ...
PageRank算法java实现版本 -
cyxy99:
schaha123 写道楼主还有一个问题想请教一下,下面这2段 ...
PageRank算法java实现版本 -
njthnet:
Participle 和 IkParticiple 这2个类找 ...
贝叶斯文本分类 java实现 -
u012534143:
我用同样的方法,同样的节点关系,为什么的得到的结果与您不一样呢 ...
PageRank算法java实现版本
聚类算法中基于链接的算法大致有三种:单链接算法(single link),平均链接算法(average link),最小生成数算法(minimum spanning tree)。现在实现单链接算法,其他算法以后再续吧。
单链接算法的过程是 首先生成各个元素的距离矩阵,根据距离和阀值的比对来控制生成的聚类个数,阀值越大,生成的聚类越少,直到同属一类。
下面例子实现了根据经纬度来实现城市的聚类。
By 阿飞哥 转载请说明
腾讯微博:http://t.qq.com/duyunfeiRoom
新浪微博:http://weibo.com/u/1766094735
单链接算法的过程是 首先生成各个元素的距离矩阵,根据距离和阀值的比对来控制生成的聚类个数,阀值越大,生成的聚类越少,直到同属一类。
下面例子实现了根据经纬度来实现城市的聚类。
package singlelink; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class SingleLinkTest { public static void main(String[] args) { List<City> citys = new ArrayList<City>(); City city0 = new City(); city0.setName("北 京"); city0.setX(116.28); city0.setY(39.54); citys.add(city0); City city1 = new City(); city1.setName("上 海"); city1.setX(121.29); city1.setY(31.14); citys.add(city1); City city2 = new City(); city2.setName("天 津"); city2.setX(117.11); city2.setY(39.09); citys.add(city2); City city3 = new City(); city3.setName("重 庆"); city3.setX(106.32); city3.setY(29.32); citys.add(city3); City city4 = new City(); city4.setName("哈尔滨"); city4.setX(126.41); city4.setY(45.45); citys.add(city4); City city5 = new City(); city5.setName("长 春"); city5.setX(125.19); city5.setY(43.52); citys.add(city5); City city6 = new City(); city6.setName("南 京"); city6.setX(118.50); city6.setY(32.02); citys.add(city6); City city7 = new City(); city7.setName("武 汉"); city7.setX(114.21); city7.setY(30.37); citys.add(city7); City city8 = new City(); city8.setName("台 北"); city8.setX(121.31); city8.setY(25.03); citys.add(city8); City city9 = new City(); city9.setName("香 港"); city9.setX(114.10); city9.setY(22.18); citys.add(city9); SingleLink sing = new SingleLink(citys); List<Set<City>> list = sing.compute(); for (Set<City> list0 : list) { System.out.println("============="); for (City city : list0) { System.out.println(city.getName() + " : (" + city.getX()+","+city.getY()+")"); } } } } /** * 聚类之 单链接算法 * * @author duyf * */ class SingleLink { private List<City> data; // 默认阀值 private double distanceX = 8; public SingleLink(List<City> list) { data = list; } public List<Set<City>> compute() { List<Set<City>> list = new ArrayList<Set<City>>(); // 距离矩阵 double[][] ds = new double[data.size()][data.size()]; for (int i = 0; i < data.size(); i++) { City city1 = data.get(i); for (int j = i + 1; j < data.size(); j++) { City city2 = data.get(j); ds[i][j] = getDistance(city1, city2); // 矩阵 对称性 ds[j][i] = ds[i][j]; } ds[i][i] = 0.0; } for (int i = 0; i < ds.length; i++) { for (int j = 0; j < ds.length; j++) { System.out.print((int) ds[i][j] + ","); } System.out.println(); } boolean[] hasUsed = new boolean[ds.length]; for (int i = 0; i < ds.length; i++) { Set<City> setDs = new HashSet<City>(); if (hasUsed[i]) { continue; } for (int j = i; j < ds.length; j++) { if (ds[i][j] <= distanceX && hasUsed[j]==false) { setDs.add(data.get(j)); hasUsed[j] = true; } } if (setDs.size() > 0) { list.add(setDs); } } return list; } // 计算空间距离 private double getDistance(City city1, City city2) { double distance=Math.pow(city1.getX()-city2.getX(),2)+Math.pow(city1.getY()-city2.getY(),2); return Math.sqrt(distance); } } /** * 城市 * * @author duyf * */ class City { private String name; // 经度 private double x; // 纬度 private double y; public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean equals(Object obj) { if (obj == null) { return false; } if (this == obj) { return true; } City other = (City) obj; if (this.getX() == other.getX() && this.getY() == other.getY()) { return true; } return false; } }
By 阿飞哥 转载请说明
腾讯微博:http://t.qq.com/duyunfeiRoom
新浪微博:http://weibo.com/u/1766094735
发表评论
-
招Java培训老师(还是论坛招人靠谱)
2015-05-10 13:39 556好久没来坛子了,一来就搞这么有目的的事儿。。。 好吧, ... -
动手开发自己的mvc-3----容器该帮我们做什么?(非常的重点)
2013-01-22 13:55 1824注解注入 我们知道,Spring只有一个角色:工厂。这个工厂可 ... -
动手开发自己的mvc-2----完善控制层,提供自动注入和注解上传等功能
2013-01-22 13:44 2590当表单提交的内容过多 ,让懒惰的程序员一个个getPara ... -
动手开发自己的mvc-1----实现初步的控制层,实现各种配置和资源获取
2013-01-22 13:28 2828mvc框架最基础的功能就是跳转,struts2支持注 ... -
动手开发自己的mvc (系列)
2013-01-22 14:08 1936到年尾了,整理了一下我Evernote藏的各种文档,打算把ys ... -
整合了一个小的爬取流程框架
2013-01-08 13:04 1320弄了一个小的爬取流程框架,把之前工作中用到的一些小经验 ... -
Mahout各种推荐器的主要特点
2012-12-06 15:17 2999Mahout有很多推荐的实现,各有特点,在这里一并记录 ... -
怎样通过词频得到这个词频的排序?
2012-12-03 14:35 2072在大规模检索中,我们怎样通过已经的词频得到词频的排序 ... -
drools实现自定义业务规则
2012-10-12 11:49 2852最近做财务相关的积分规则,由于这个功能以后涉及到方方面面 ... -
贝叶斯文本分类 java实现
2012-09-25 15:15 12696昨天实现了一个基于贝叶斯定理的的文本分类,贝叶斯定理假 ... -
前段时间做了一个小型的MVC
2012-07-20 13:23 0前端时间做了一个小型的MVC,麻雀虽小,五脏俱全,目前实现的功 ... -
聚类算法之MST算法 java实现版本
2012-07-17 14:20 2810在介绍最小生成树算法(MST)之前,简单说一下平均链接算 ... -
朴素贝叶斯分类器
2012-05-20 15:25 0NaiveBayes分类器的优点是能得到已知Y的条件下X的 ... -
PageRank算法java实现版本
2012-05-16 16:03 17481PageRank算法是Google的核心搜索算法,在所有 ... -
聚类算法之kmeans算法java版本
2012-04-22 21:34 20909聚类的意思很明确,物以类聚,把类似的事物放在一起。 ... -
昨天做了个小工具DB转pojo,html,sql
2012-03-21 13:15 1782做dbutils时为了方便就做了个小工具,省点小事儿吧。 -
我这儿的讨论(项目小组)区可以进来了
2012-02-28 10:38 150java项目小组群,前几天清了几个破坏气氛者,和不发言 ... -
智能web探究群组建立了
2011-11-24 12:10 1638最近群组已申请成功 ,地址是http://web.gr ... -
Cas https方式改为http方式
2011-09-24 13:02 2358最近项目要测试,来不及申请等待证书,所以先把项目改为http的 ... -
jdk6原生态webservice
2011-06-30 13:38 8929近期做cas 单点登录的时候由于要同步用户信息,所以准备在 ...
相关推荐
Java语言是实现k-means聚类算法的不二之选。 在学习k-means聚类算法之前,需要了解一些基本概念: 1. 聚类分析:聚类分析是指对数据进行分类,将相似的数据点聚类到一起,形成不同的簇。 2. 无监督学习:无监督...
K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象...
java版的DBSCAN聚类算法实现,是典型的算法思路实现,遍历未访问的所有点,如果是核心点,就新建一个簇,然后遍历其邻域内的所有点集A,不断扩展,如果簇内的点时核心点,就将其邻域所有点纳入点集A,并从点集移除已...
java实现FCM聚类算法java实现FCM聚类算法java实现FCM聚类算法java实现FCM聚类算法
在这个场景中,我们讨论的是使用Java编程语言实现的一种基于网格的聚类算法。 1. **Java编程基础** Java是一种广泛使用的面向对象的编程语言,具有跨平台性、高效性和丰富的库支持。在处理大数据和算法实现时,...
聚类算法,使用欧氏距离实现,可通过文件对算法功能进行测试
K-means聚类算法是一种广泛应用的数据挖掘方法,用于无监督学习中的分类问题。它通过将数据点分配到最近的聚类中心来组织数据,从而自动发现数据的分组结构。在JAVA程序实现中,K-means算法的关键步骤包括初始化、...
综上所述,Java实现的KMeans聚类算法可以很好地处理数据库中的字段聚类,通过与MySQL的结合,能有效地对数据进行分析和整理,从而为业务决策提供有力支持。在实际应用中,我们需要关注算法的性能优化和结果的准确性...
本文将介绍聚类算法的原理、应用场景以及如何在Java中实现一个简单的聚类算法。 聚类算法在多个领域有着广泛的应用,以下是一些常见的应用场景: (1)图像处理:聚类算法可用于图像分割、图像检索等场景。 (2)...
Mahout 聚类算法 Mahout 聚类算法是数据挖掘和机器学习领域中的一种重要算法,它可以将相似的数据点聚集在一起,以便更好地理解和分析数据。Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、...
AP聚类算法,即Affinity Propagation(亲和传播)算法,是由Michael E. Fisher、David M. Bickel和Seth S. Meyer等人在2007年提出的一种无中心、非层次的聚类方法。它不同于传统的K-means或层次聚类,AP算法不需要...
### Hadoop 实现聚类算法 #### 一、引言 在大数据处理领域,Hadoop已经成为了一种不可或缺的工具。其核心组件包括分布式文件系统HDFS(Hadoop Distributed File System)和并行处理框架MapReduce。这些技术为数据...
这是一种数据挖掘中的k均值聚类算法的简单实现,基于Java语言
本项目实现了层次聚类算法的Java版本,下面将详细介绍其关键概念和技术。 首先,层次聚类分为两种类型:凝聚型(Agglomerative)和分裂型(Divisive)。凝聚型是从单个数据点开始,逐步合并成更大的簇,直到满足...
通过上述解释,我们可以看出,"多维k-means聚类算法java实现,导入直接运行"项目提供了一个方便的数据聚类工具,用户只需运行指定的Java程序,即可对多维数据进行有效的分类。文件89d2e98083ce4138aaa151e6efde2e00...
网上很多python的聚类算法有很多,找的Java的,里面是个jar,直接调用就好了
DBSCAN聚类算法的实现,对图片内的物体进行分类,综合考虑了像素和像素点的位置,运行速度较慢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
【聚类算法】使用numpy实现的聚类算法(包括时空聚类算法).zip 介绍 1.1 数据介绍 data/cluster_time:按时间顺序排列的用户行为轨迹 data/cluster_unix_time:按时间顺序(时间已经转换为时间戳)排列的用户行为...
《Canopy算法:改进聚类算法的探索与实践》 在大数据分析领域,聚类算法是一种重要的无监督学习方法,其目标是将数据集中的对象按照相似性进行分组,形成不同的类别。然而,传统的聚类算法如K-means、DBSCAN等在...