上次我介绍了分类器的使用方法,这次我来介绍一下聚类算法。聚类算法在数据挖掘里面被称之为无监督学习(unsupervised learning),这是与分类算法(supervised learning)相对的。在它们两者之间还一种叫做半监督学习(semi-supervised learning)这个我会在后面的文章中重点介绍。所谓无监督学习就是在预先不知道样本类别的情况下,由聚类算法来判别样本的类别的一种学习方法。
聚类算法的一般过程分为:
1. 读入需预测样本
2. 初始化聚类算法(并设置参数)
3. 使用聚类算法对样本进行聚类
4. 打印聚类结果
我们来看下面的一个实例:
package com.csdn;
import java.io.File;
import weka.clusterers.SimpleKMeans;
import weka.core.DistanceFunction;
import weka.core.EuclideanDistance;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
public class SimpleCluster {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Instances ins = null;
Instances tempIns = null;
SimpleKMeans KM = null;
DistanceFunction disFun = null;
try{
/*
* 1.读入样本
*/
File file= new File("C:\\Program Files\\Weka-3-6\\data\\contact-lenses.arff");
ArffLoader loader = new ArffLoader();
loader.setFile(file);
ins = loader.getDataSet();
/*
* 2.初始化聚类器
* 在3.6版本可以通过setDistanceFunction(DistanceFunction df)
* 函数设置聚类算法内部的距离计算方式
* 而在3.5版本里面默认的采用了欧几里得距离
*/
KM = new SimpleKMeans();
//设置聚类要得到的类别数量
KM.setNumClusters(2);
/*
* 3.使用聚类算法对样本进行聚类
*/
KM.buildClusterer(ins);
/*
* 4.打印聚类结果
*/
tempIns = KM.getClusterCentroids();
System.out.println("CentroIds: " + tempIns);
}catch(Exception e){
e.printStackTrace();
}
}
}
我们可以看到读入样本的过程是与上一节的一样的方法。在构建聚类器时也是通过现有的类来实现的。现在weka的聚类算法有11种之多,我所了解的也就是一两种算法而已。SimpleKMean是最简单的KMeans算法,因为聚类算法的核心是通过距离来得到类别(类间相异,类内相似),所以需要有一个计算距离的公式常见的就是欧几里得距离了。在3.5版本中weka没有考虑其它距离公式的情况,将SimpleKMean计算距离的方法默认为欧几里得距离。在3.6中就weka提供了setDistanceFunction(DistanceFunction df)的接口可以方便我们设置自己的距离计算方法。
有一点要注意,在上面的聚类过程中,我们将样本的类别属性也放在里面了,这样做是不符合常识的,因为样本类别属性包含了大量的类别信息,可以诱导聚类算法得到很好的效果。但是这与我们的初衷是相背离的,所以在聚类之前我们要记住删除掉类别属性。
在第四步打印聚类结果是一个很简单的信息,里面包括了聚类的几个中心点。在我们写程序时,可以使用ClusterEvaluation类来打印更多的信息。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/anqiang1984/archive/2009/04/02/4044219.aspx
分享到:
相关推荐
《深入理解Weka中的聚类算法》 在数据挖掘领域,聚类算法是无监督学习的重要组成部分,它与监督学习和半监督学习相区别。无监督学习是指在没有已知类别标签的情况下,通过聚类算法对数据进行分组,使得同一组内的...
标题中的“weka-src.rar”指的是Weka的数据挖掘工具的源代码压缩包,而“weka_Weka 聚类_java 数据挖掘_weka java_聚类 java”这部分描述了该软件的主要功能,即Weka在Java环境下进行数据挖掘,特别是聚类分析。Weka...
其中,K-Means 算法是最常用的聚类算法之一。 K-Means 算法的基本思想是将样本分配到离它最近的簇中,以使得簇内的样本尽可能相似。K-Means 算法的优点是计算速度快、结果可靠,但是它也存在一些缺点,例如对初始值...
通过对大量数据的聚类分析,不仅能帮助银行精准定位目标客户,还能显著提升电话营销的效率和成功率。而所采用的算法,例如决策树(C4.5)和随机森林等,都是数据挖掘和机器学习中的重要工具,值得在类似的领域内...
**Weka中的聚类算法** Weka是一款强大的数据挖掘工具,包含了多种机器学习算法,其中包括11种不同的聚类算法。在提供的代码示例中,使用的是`SimpleKMeans`,这是一个基于K-Means算法的简单实现。K-Means是一种广泛...
【WEKA聚类分析实例代码】是关于使用WEKA这一强大的数据挖掘工具进行聚类分析的一个实际应用。WEKA(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的一个开源数据挖掘软件,它提供了丰富的...
仿照weka自带的简单K均值聚类算法,实现的一个简单的模糊C均值聚类算法。
本工具包集成了Weka中最新的分类和聚类算法,将其打包成jar包,方便java开发者调用
一个我本人写的关天Weka.jar工具包中各种聚类算法的调用的java源程序
在数据分析和机器学习领域,Weka 是一个广泛使用的开源工具,它提供了丰富的数据预处理、分类、回归、聚类和关联规则挖掘等算法。在这个场景中,我们关注的是"Weka 用于文旦聚类",这表明我们将使用Weka来执行一种...
### 基于WEKA平台的Web事务聚类算法的研究 #### 一、引言与背景 随着互联网的快速发展,Web上的数据呈现出爆炸性增长,这些数据不仅规模庞大,而且具有高度的动态性和不确定性。然而,传统的数据挖掘技术在处理这...
“个人推荐的Weka教程,包含了数据格式、数据准备、分类和聚类Demo” 这个标题表明这是一个关于Weka的数据挖掘工具的教程,它涵盖了数据预处理的基本步骤,包括数据格式的理解、数据准备的技巧,以及核心的机器学习...
非常实用的数据挖掘工具包
### Cluster-WEKA聚类知识点解析 #### 一、引言 在数据挖掘领域,聚类是一种非常重要的无监督学习技术,它可以帮助我们从大量数据中发现潜在的模式和结构。Weka作为一款广泛使用的开源数据挖掘软件,因其丰富的算法...
【基于Weka的数据分类和聚类分析实验报告】 在数据科学和机器学习领域,Weka是一个广泛使用的开源工具,它提供了各种数据预处理、分类、聚类和回归算法。本实验报告主要关注如何使用Weka进行数据分类和聚类,并通过...
这意味着EM算法在Weka中不仅仅作为一种独立的聚类方法存在,还能够与SimpleKMeans结合使用,提供更加灵活的聚类解决方案。值得注意的是,EM算法在Weka中的实现不仅考虑了算法本身的特性,还充分考虑了数据预处理的...