聚类算法在数据挖掘里面被称之为无监督学习(unsupervised learning),这是与监督学习(supervised learning)相对的。在它们两者之间还一种叫做半监督学习(semi-supervised learning)
聚类算法的一般过程分为:
- 1. 读入需预测样本
- 2. 初始化聚类算法(并设置参数)
- 3. 使用聚类算法对样本进行聚类
- 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/
时间: 2024-10-05 06:19:07