在这里将使用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中最新的分类和聚类算法,将其打包成jar包,方便java开发者调用
一个我本人写的关天Weka.jar工具包中各种聚类算法的调用的java源程序
Chameleon聚类算法的Weka实现,实现一系列的算法,帮助更好的开发,实现。
基于WEKA软件实现金融领域数据挖掘分析案例,分别使用随机森林,支持向量机等算法对大数据进行聚类分析,得出结论
聚类算法在数据挖掘里面被称之为无监督学习(unsupervised learning),这是与分类算法(supervised learning)相对的。在它们两者之间还一种叫做半监督学习(semi-supervised learning)这个我会在后面的文章中重点...
详细讲述了weka中EM算法解析,清晰,值得学习
基于weka的数据聚类分析实验
Python从零实现 K-mean 和K-中心点聚类算法的样本数据
仿照weka自带的简单K均值聚类算法,实现的一个简单的模糊C均值聚类算法。
该算法是对weka算法包功能的拓展,是聚类算法中的随机聚类分析。需要weka算法包支持。
weka智能分析示例代码,主要实现了聚类分析功能。
Weka4WS采用WSRF技术用于执行远程的数据挖掘和管理分布式计算,支持分布式数据挖掘任务。...构建了网格环境下面向服务的分布式数据挖掘体系,并以基于Weka4WS的分布式聚类算法验证了算法的有效性和体系结构的可行性。
基于WEKA平台的Web 事务聚类算法的研究
Java 编写的多种数据挖掘算法 包括聚类、分类、预处理等
引用Weka学习二(聚类算法).pdf
引用Weka学习二(聚类算法)[定义].pdf
#资源达人分享计划#
对传统的K-平均算法作了简单的介绍和讨论,提出了一种具有单纯型法思想的K-中心点轮换法。分别对比了K-均值算法与K-中心点轮换...同时,基于主流的weka开源数据挖掘工具实现了改进算法。实验结果表明了算法的有效性。
另外还有其他两个算法,代码在cplusplus文件里面,但是没有用于数据分析,有需要可以自己加。资料里面还包含了我的实验报告,结合了weka进行预处理。另外还有可执行文件,该目录下的其他文件是预处理后的数据,删除...