Weka聚类算法的两个实现算法
来源:互联网 发布:sql语句查询所有库存 编辑:程序博客网 时间:2024/05/21 06:20
这是转自博友的博客,讲解了java调用weka两种聚类算法的demo,在调用之前,必须下载weka jar包导入eclipse里面,并下载weka自带的数据集 进行测试;
本人只是进行了简单的测试,发现算法可以完美调用,但是算法的精髓还有待深入理解;
转载自:http://rangerwolf.iteye.com/blog/2012208
在这里将使用Weka自带的K-means以及EM算法对同一份数据进行聚类。
目前使用的是自带的数据集。我也不太清楚这样聚类的效果如何 sigh...
Weka Version: 3.7.10
K-Means K-均值算法
Java代码
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. 如下:
Java代码EM em = null;
em = new EM();
// 使用交叉验证自动选择聚类数目
em.setNumClusters(-1);
em.setMaxIterations(100);
em.buildClusterer(ins);
具体可以看源码:
Java代码/**
* 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聚类算法的两个实现算法
- Weka聚类算法的两个实现算法
- ID3算法的weka实现
- weka 聚类算法总结
- weka支持的算法和weka简单的聚类例子
- weka支持的算法和weka简单的聚类例子
- C++JAVA程序调用weka聚类算法的方法
- Java调用weka的各种聚类算法
- Weka初步二(聚类算法)
- Weka学习二(聚类算法)
- Weka -- 聚类算法之K-means
- Weka -- 聚类算法之K-means
- Weka -- 聚类算法之K-means
- Weka初步二(聚类算法)
- [Weka]在自己的算法中调用Weka实现文本分类的一个例子
- weka实战003:apriori关联规则算法的实现
- weka中Apriori算法实现与分析
- weka之如何利用kmeans算法分析数据的聚类效果
- Oracle中清除游标缓存的几种方法
- andorid平板中安装完整的ubuntu系统
- 第四章 Controller接口控制器详解(5)——跟着开涛学SpringMVC
- CMake编译运行OpenCV程序_debug总结
- Elasticsearch 全字段搜索_all,query_string查询,不进行分词
- Weka聚类算法的两个实现算法
- Symfony2之创建一个简单的web应用
- [Leetcode] Product of Array Except Self
- 阿里云 log输出
- JAXB(Java Architecture for XML Binding)
- springMvc入门配置Validation
- RedHat/CentOS利用iso镜像做本地yum源
- BAT解密:互联网技术发展之路(1) - 技术发展的驱动力
- 使用js动态添加组件