首页 > 代码库 > weka学习(聚类算法)

weka学习(聚类算法)

聚类算法在数据挖掘里面被称之为无监督学习(unsupervised learning),这是与监督学习(supervised learning)相对的。在它们两者之间还一种叫做半监督学习(semi-supervised learning

聚类算法的一般过程分为:

  1. 1.       读入需预测样本
  2. 2.       初始化聚类算法(并设置参数)
  3. 3.       使用聚类算法对样本进行聚类
  4. 4.       打印聚类结果

实例:

package weka2;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 {    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("D:\\work\\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();       }    }}

SimpleKMean是最简单的KMeans算法,因为聚类算法的核心是通过距离来得到类别(类间相异,类内相似),所以需要有一个计算距离的公式常见的就是欧几里得距离了。在3.5版本中weka没有考虑其它距离公式的情况,将SimpleKMean计算距离的方法默认为欧几里得距离。在3.6中就weka提供了setDistanceFunction(DistanceFunction df)的接口可以方便我们设置自己的距离计算方法。

本文摘要于:http://anqiang1900.blog.163.com/blog/static/11418886420093631322170/

weka学习(聚类算法)