`

Weka聚类算法的两个实现算法

阅读更多

在这里将使用Weka自带的K-means以及EM算法对同一份数据进行聚类。

目前使用的是自带的数据集。我也不太清楚这样聚类的效果如何 sigh...

 

Weka Version: 3.7.10

 

K-Means K-均值算法

import java.io.File;

import weka.clusterers.SimpleKMeans;
import weka.core.DistanceFunction;
import weka.core.Instances;
import weka.core.converters.ArffLoader;


public class TestKMeans {
	
	public static void main(String[] args) {
		Instances ins = null;
		
		SimpleKMeans KM = null;
		
		// 目前没有使用到,但是在3.7.10的版本之中可以指定距离算法
		// 默认是欧几里得距离
		DistanceFunction disFun = null;
		
		try {
			// 读入样本数据
			File file = new File("D:\\Program Files\\Weka-3-7\\data\\contact-lenses.arff");
			ArffLoader loader = new ArffLoader();
			loader.setFile(file);
			ins = loader.getDataSet();
			
			// 初始化聚类器 (加载算法)
			KM = new SimpleKMeans();
			KM.setNumClusters(2); 		//设置聚类要得到的类别数量
			KM.buildClusterer(ins);		//开始进行聚类
			
			// 打印聚类结果
			System.out.println(KM.toString());
//			for(String option : KM.getOptions()) {
//				System.out.println(option);
//			}
//			System.out.println("CentroIds:" + tempIns);
		} catch(Exception e) {
			e.printStackTrace();
		}
		
	}
}

 

在上面的算法之中,使用的是SimpleKMeans这个类。

 

使用EM算法的方法几乎一样,唯一的不同就是在设置类数目的时候可以设置成-1. 如下:

EM em = null;
em = new EM();
// 使用交叉验证自动选择聚类数目
em.setNumClusters(-1);
em.setMaxIterations(100);
em.buildClusterer(ins);

 

具体可以看源码:

/**
   * Set the number of clusters (-1 to select by CV).
   * 
   * @param n the number of clusters
   * @throws Exception if n is 0
   */
  @Override
  public void setNumClusters(int n) throws Exception {

    if (n == 0) {
      throw new Exception("Number of clusters must be > 0. (or -1 to "
          + "select by cross validation).");
    }

    if (n < 0) {
      m_num_clusters = -1;
      m_initialNumClusters = -1;
    } else {
      m_num_clusters = n;
      m_initialNumClusters = n;
    }
  }

 

关于EM 以及K-Means的具体描述,请自行百度吧~

分享到:
评论

相关推荐

    WEKA聚类算法wine数据集分析研究报告.docx

    WEKA 聚类算法在 Wine 数据集上的应用与效果分析 本报告旨在探讨使用 WEKA 中的 DBSCAN 算法对 Wine 数据集进行聚类的效果和分析。 Wine 数据集是一个常用的多元分类问题数据集,包含了 178 个样本和 13 个特征。在...

    weka 中em算法详细解析

    EM算法通过两个主要步骤——E步(期望步)和M步(最大化步)来逐步优化模型参数,直至收敛。 ### EM算法在Weka中的位置与实现 在Weka中,EM算法位于clusterers模块下,与SimpleKMeans算法紧密相连。这意味着EM算法...

    Weka中各种分类算法和聚类算法集成

    本工具包集成了Weka中最新的分类和聚类算法,将其打包成jar包,方便java开发者调用

    WEKA聚类分析实例代码

    【WEKA聚类分析实例代码】是关于使用WEKA这一强大的数据挖掘工具进行聚类分析的一个实际应用。WEKA(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的一个开源数据挖掘软件,它提供了丰富的...

    Weka中各种聚类算法的调用的java源程序

    一个我本人写的关天Weka.jar工具包中各种聚类算法的调用的java源程序

    Chameleon聚类算法的Weka实现

    Chameleon聚类算法的Weka实现,实现一系列的算法,帮助更好的开发,实现。

    基于WEKA的聚类分析算法

    本文基于葡萄牙零售银行的数据集,使用WEKA软件对2008年至2013年的数据进行分析,以20个可能影响银行客户是否订阅定期存款的因素作为研究对象,采用不同的算法进行分类,旨在根据客户信息缩小目标客户范围,并提高...

    引用 Weka学习二(聚类算法) .docx

    Weka是一个广泛使用的数据挖掘工具,其中包含了多种聚类算法,如`SimpleKMeans`,它是基于K-Means算法的一个简单实现。K-Means算法是迭代式地将数据点分配到最近的簇中心,然后更新簇中心为该簇所有数据点的均值,...

    cluster-weka聚类

    ### Cluster-WEKA聚类知识点解析 #### 一、引言 在数据挖掘领域,聚类是一种非常重要的无监督学习技术,它可以帮助我们从大量数据中发现潜在的模式和结构。Weka作为一款广泛使用的开源数据挖掘软件,因其丰富的算法...

    Python从零实现 K-mean 和K-中心点聚类算法的样本数据

    K-Means和K-中心点(K-Centroids)是两种广泛使用的聚类算法,尤其适用于大数据集的处理。本篇文章将详细探讨这两种算法及其在Python中的实现。 首先,K-Means算法是一种迭代方法,它通过以下步骤工作: 1. 初始化...

    模糊C均值聚类(weka)

    仿照weka自带的简单K均值聚类算法,实现的一个简单的模糊C均值聚类算法。

    weka-src.rar_ weka_Weka 聚类_java 数据挖掘_weka java_聚类 java

    Weka是一个强大的开源数据挖掘平台,由新西兰的Waikato大学开发,它提供了多种机器学习和数据挖掘算法,包括聚类、分类、关联规则、特征选择等。 在描述中提到的“Java 编写的多种数据挖掘算法”,这表明Weka是用...

    引用Weka学习二(聚类算法).pdf

    在 Java 语言中,可以使用 Weka 软件包来实现聚类算法。例如,使用 SimpleKMeans 类可以实现 K-Means 算法。下面是一个简单的示例代码: ```java package com.csdn; import java.io.File; import weka.clusterers....

    清华大学精品数据挖掘&amp;机器学习学习PPT课件(42页)含练习题 第3章 聚类算法介绍.pptx

    2. **划分聚类算法**:最著名的例子是K-means算法,它预先设定簇的数量K,然后通过迭代调整数据分配,使得每个簇内的数据相似度最大化,而簇间的差异最大化。 3. **基于密度的聚类算法**:如DBSCAN(Density-Based ...

    RandomizableClusterer.java.tar.gz_Weka 聚类_java cluster package_w

    在给定的`RandomizableClusterer.java.tar.gz`压缩包中,我们关注的是Weka中的一个特定聚类算法实现——RandomizableClusterer。本文将详细介绍这一算法,以及如何在Java环境中进行集成与应用。 首先,让我们理解`...

    引用Weka学习二(聚类算法)[定义].pdf

    **Weka中的聚类算法** Weka是一款强大的数据挖掘工具,包含了多种机器学习算法,其中包括11种不同的聚类算法。在提供的代码示例中,使用的是`SimpleKMeans`,这是一个基于K-Means算法的简单实现。K-Means是一种广泛...

    基于连通图的分裂聚类算法java数据挖掘算法源码.rar

    Java库如Weka、ELKI等提供了大量数据挖掘工具和算法,包括聚类算法。通过阅读和理解源码,开发者可以学习如何在Java中实现复杂的算法,这对于学术研究和实际应用都极具价值。 4. 源码软件:源码是程序的原始形式,...

    基于WEKA平台的Web 事务聚类算法的研究

    ### 基于WEKA平台的Web事务聚类算法的研究 #### 一、引言与背景 随着互联网的快速发展,Web上的数据呈现出爆炸性增长,这些数据不仅规模庞大,而且具有高度的动态性和不确定性。然而,传统的数据挖掘技术在处理这...

    weka-src.rar_lovely863_weka_weka算法代码实现

    【标题】"weka-src.rar_lovely863_weka_weka算法代码实现" 提供的是一个关于Weka机器学习库的源代码实现,由用户lovely863分享。这个压缩包包含了Weka中各种算法的Java实现,是深入理解和学习Weka以及其算法的好资源...

    网格环境下基于Weka4WS的分布式聚类算法.pdf

    在探讨网格环境下基于Weka4WS的分布式聚类算法时,我们首先要了解几个核心概念。首先,“网格”是一种分布式计算基础设施,它将分散在不同地理位置的计算资源(例如处理器、存储器、数据、仪器等)有机地整合起来,...

Global site tag (gtag.js) - Google Analytics