基于weka的数据库挖掘➖聚类方法AGNES算法

2023年 10月 16日 79.9k 0

基于weka的数据库挖掘➖聚类方法AGNES算法

关于作者

  • 作者介绍

🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉🏆
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻

目标

掌握AGNES算法的原理和聚类过程

内容

采用AGNES算法,对给出的16个样本数据进行聚类,聚类簇数可自由调整,最后输出簇数为2、3、4的聚类结果。

层次聚类

层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。具体又可分为:

  • 凝聚的层次聚类:一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。

  • 分裂的层次聚类:采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终结条件。

层次凝聚的代表是AGNES算法。层次分裂的代表是DIANA算法。

AGNES初识

初识AGNES算法(Agglomerative Nesting)是一种聚类算法,用于将数据集中的样本分组成不同的簇。AGNES算法是一种层次聚类算法,它从每个样本作为单独的簇开始,逐步合并最相似的簇,直到满足停止准则为止。

AGNES步骤

  • 初始化:将每个样本作为单独的簇。
  • 计算距离:计算每对簇之间的距离,常用的距离度量方法包括欧氏距离、曼哈顿距离等。
  • 合并最相似的簇:选择距离最近的两个簇进行合并,形成一个新的簇。
  • 更新距离矩阵:更新距离矩阵,反映新的簇与其他簇之间的距离。
  • 重复步骤3和4,直到满足停止准则,例如达到指定的簇数目或距离阈值。
  • 具体实现

    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

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论