基于weka的数据库挖掘➖聚类方法AGNES算法
关于作者
- 作者介绍
🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉🏆
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻
目标
掌握AGNES算法的原理和聚类过程
内容
采用AGNES算法,对给出的16个样本数据进行聚类,聚类簇数可自由调整,最后输出簇数为2、3、4的聚类结果。
层次聚类
层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。具体又可分为:
-
凝聚的层次聚类:一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。
-
分裂的层次聚类:采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终结条件。
层次凝聚的代表是AGNES算法。层次分裂的代表是DIANA算法。
AGNES初识
初识AGNES算法(Agglomerative Nesting)是一种聚类算法,用于将数据集中的样本分组成不同的簇。AGNES算法是一种层次聚类算法,它从每个样本作为单独的簇开始,逐步合并最相似的簇,直到满足停止准则为止。
AGNES步骤
具体实现
Cluster.java
public class Cluster {
private List dataPoints = new ArrayList(); // 类簇中的样本点
private String clusterName;
public List getDataPoints() {
return dataPoints;
}
public void setDataPoints(List dataPoints) {
this.dataPoints = dataPoints;
}
public String getClusterName() {
return clusterName;
}
public void setClusterName(String clusterName) {
this.clusterName = clusterName;
}
}
ClusterAnalysis.java
public class ClusterAnalysis {
public List startAnalysis(List dataPoints,int ClusterNum){
List finalClusters=new ArrayList();
List originalClusters=initialCluster(dataPoints);
finalClusters=originalClusters;
while(finalClusters.size()>ClusterNum){
double min=Double.MAX_VALUE;
int mergeIndexA=0;
int mergeIndexB=0;
for(int i=0;i