weka中,如何使用EM聚类,并导出聚类结果
来源:互联网 发布:淘宝店链接地址 编辑:程序博客网 时间:2024/05/17 09:08
新建Eclipse工程,下载weka.jar包,导入工程,新建class类,创建main函数,这些都不用说了吧!
首先准备数据
官方文本格式为arff,个人原因选择TXT格式,这个不必纠结!
新建txt文本,格式为ANSI,接下来文件内容格式:
@relation 作者
@attribute 特征名称 特征属性
@data
第一个特征值,第二个特征值,……
备注:①个人认为relation不是很重要,但是为了不必要的麻烦,可以写一下。
②attribute为特征,如果你的样本用k个特征表示,那么就有k行@attribute。
③data后面写每个样本的特征向量,中间用英文逗号隔开。
④特征属性可以为实数,可以为bool值,可以为string,
⑤特征属性有四种基本类型
numeric 数值型 <nominal-specification> 分类(nominal)型 string 字符串型 date [<date-format>] 日期和时间型
注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”“attribute ”和“date”则不区分。
具体数据格式可以看博客:http://blog.csdn.net/buaalei/article/details/7103055
准备好数据就可以写代码了!!
Instances ins = null;//用来存放样本EM em = null;//聚类模型int classnum=400;//聚类数目try {// 读入样本数据 File file = new File("D:/f.txt");//准备刚才的数据 ArffLoader loader = new ArffLoader();//weka自带的数据读取类 loader.setFile(file);//读入文件 ins = loader.getDataSet();//获取样本// 初始化聚类器 (加载算法) em = new EM();//初始化聚类器 em.setNumClusters(classnum); // 设置聚类要得到的类别数量 em.buildClusterer(ins); // 开始进行聚类// 打印聚类结果 ClusterEvaluation evaluation=new ClusterEvaluation();//聚类评估器 evaluation.setClusterer(em);//设置需要评估的聚类器 evaluation.evaluateClusterer(new Instances(ins));//设置样本 double[] cnum=evaluation.getClusterAssignments();//获取每个样本聚类后所属类别 //System.out.println(KM.toString());//输出每个簇的簇中心} catch (Exception e) { e.printStackTrace();}
基础代码就是这些,想要输出聚类后每个簇有哪些样本,需要自己根据实际情况写代码。cnum标记了每个每个样本所属的类簇,且顺序是与data(代码中为f.txt)后的数据顺序是一致的。
如果问我我是怎么输出聚簇结果,那我说说我的思路吧!我有一个分词文件,里面是每个样本分词结果!data文件(f.txt)中每个样本的特征向量就是基于原始样本分词结果生成的,分词文件(里面是文本)与data文件(里面有特征向量)中的样本顺序是保持一致的,这样我只需要读入分词文件中的每一个样本,并用cnum做标记,然后用Map进行分类,进行输出,就可以得到最后聚类的结果!
Map<Double,List<String>> result=new HashMap<Double,List<String>>();
- weka中,如何使用EM聚类,并导出聚类结果
- Python中如何使用weka
- 如何在weka中使用libsvm
- 在java中调用weka聚类方法并显示相应的类标签+weka中创建arff数据
- Weka中使用libsvm
- Weka中使用LibSVM
- Weka中使用libsvm
- weka中使用Liblinear
- Eclipse中使用Weka
- 在Java中使用weka:手动生成并输出对分类器的评估
- JAVA中如何调用matlab并返回运算结果?
- Weka开发--在你的代码中使用weka
- Weka开发--在你的代码中使用weka
- Weka开发---在你的代码中使用Weka
- 如何在weka中连接数据库
- 使用Weka进行数据挖掘(Weka教程一)Weka初识之在你的代码中使用Weka
- 第四步 使用shell操作数据库,导入分析并将结果导出成txt文件
- ibatIS中返回结果map 并使用list获取
- Hive编程(一)【基础知识】
- JAVA字符串详解
- iOS开发之模仿qq通讯录源代码!
- mybatis基础知识(第二更)
- 电商项目实战
- weka中,如何使用EM聚类,并导出聚类结果
- maven项目pom中添加依赖,但是jar无法引入项目
- 【Scikit-Learn 中文文档】半监督学习
- sql查询表中字段值相同的数据记录
- PaperWeekly 第53期 | 更别致的词向量模型:Simpler GloVe
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- [GitHub]第三讲:简单分支操作
- 51NOD-1080-两个数的平方和
- 八大排序算法Java及性能比较