在这里将使用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 数据集上的应用与效果分析 本报告旨在探讨使用 WEKA 中的 DBSCAN 算法对 Wine 数据集进行聚类的效果和分析。 Wine 数据集是一个常用的多元分类问题数据集,包含了 178 个样本和 13 个特征。在...
EM算法通过两个主要步骤——E步(期望步)和M步(最大化步)来逐步优化模型参数,直至收敛。 ### EM算法在Weka中的位置与实现 在Weka中,EM算法位于clusterers模块下,与SimpleKMeans算法紧密相连。这意味着EM算法...
本工具包集成了Weka中最新的分类和聚类算法,将其打包成jar包,方便java开发者调用
【WEKA聚类分析实例代码】是关于使用WEKA这一强大的数据挖掘工具进行聚类分析的一个实际应用。WEKA(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的一个开源数据挖掘软件,它提供了丰富的...
一个我本人写的关天Weka.jar工具包中各种聚类算法的调用的java源程序
Chameleon聚类算法的Weka实现,实现一系列的算法,帮助更好的开发,实现。
本文基于葡萄牙零售银行的数据集,使用WEKA软件对2008年至2013年的数据进行分析,以20个可能影响银行客户是否订阅定期存款的因素作为研究对象,采用不同的算法进行分类,旨在根据客户信息缩小目标客户范围,并提高...
Weka是一个广泛使用的数据挖掘工具,其中包含了多种聚类算法,如`SimpleKMeans`,它是基于K-Means算法的一个简单实现。K-Means算法是迭代式地将数据点分配到最近的簇中心,然后更新簇中心为该簇所有数据点的均值,...
### Cluster-WEKA聚类知识点解析 #### 一、引言 在数据挖掘领域,聚类是一种非常重要的无监督学习技术,它可以帮助我们从大量数据中发现潜在的模式和结构。Weka作为一款广泛使用的开源数据挖掘软件,因其丰富的算法...
K-Means和K-中心点(K-Centroids)是两种广泛使用的聚类算法,尤其适用于大数据集的处理。本篇文章将详细探讨这两种算法及其在Python中的实现。 首先,K-Means算法是一种迭代方法,它通过以下步骤工作: 1. 初始化...
仿照weka自带的简单K均值聚类算法,实现的一个简单的模糊C均值聚类算法。
Weka是一个强大的开源数据挖掘平台,由新西兰的Waikato大学开发,它提供了多种机器学习和数据挖掘算法,包括聚类、分类、关联规则、特征选择等。 在描述中提到的“Java 编写的多种数据挖掘算法”,这表明Weka是用...
在 Java 语言中,可以使用 Weka 软件包来实现聚类算法。例如,使用 SimpleKMeans 类可以实现 K-Means 算法。下面是一个简单的示例代码: ```java package com.csdn; import java.io.File; import weka.clusterers....
2. **划分聚类算法**:最著名的例子是K-means算法,它预先设定簇的数量K,然后通过迭代调整数据分配,使得每个簇内的数据相似度最大化,而簇间的差异最大化。 3. **基于密度的聚类算法**:如DBSCAN(Density-Based ...
在给定的`RandomizableClusterer.java.tar.gz`压缩包中,我们关注的是Weka中的一个特定聚类算法实现——RandomizableClusterer。本文将详细介绍这一算法,以及如何在Java环境中进行集成与应用。 首先,让我们理解`...
**Weka中的聚类算法** Weka是一款强大的数据挖掘工具,包含了多种机器学习算法,其中包括11种不同的聚类算法。在提供的代码示例中,使用的是`SimpleKMeans`,这是一个基于K-Means算法的简单实现。K-Means是一种广泛...
Java库如Weka、ELKI等提供了大量数据挖掘工具和算法,包括聚类算法。通过阅读和理解源码,开发者可以学习如何在Java中实现复杂的算法,这对于学术研究和实际应用都极具价值。 4. 源码软件:源码是程序的原始形式,...
### 基于WEKA平台的Web事务聚类算法的研究 #### 一、引言与背景 随着互联网的快速发展,Web上的数据呈现出爆炸性增长,这些数据不仅规模庞大,而且具有高度的动态性和不确定性。然而,传统的数据挖掘技术在处理这...
【标题】"weka-src.rar_lovely863_weka_weka算法代码实现" 提供的是一个关于Weka机器学习库的源代码实现,由用户lovely863分享。这个压缩包包含了Weka中各种算法的Java实现,是深入理解和学习Weka以及其算法的好资源...
在探讨网格环境下基于Weka4WS的分布式聚类算法时,我们首先要了解几个核心概念。首先,“网格”是一种分布式计算基础设施,它将分散在不同地理位置的计算资源(例如处理器、存储器、数据、仪器等)有机地整合起来,...