机器学习笔记——K-means

K-means它是一个聚类算法,它要求用户设定群集数k作为输入参数。因此,该算法的实施前。该数字预计将需要有集群。

如果有n点,需要收集k个簇中。

K-means算法首先从包括k个中心点的初始集合開始。即随机初始化簇的中心。随后,算法进行多次迭代处理并调整中心位置,知道达到最大迭代次数或中性收敛于固定点。


k-means聚类实例。选择三个随机点用作聚类中心(左上)。map阶段(右上)将每一个点赋给离其近期的簇。在reduce阶段(左下),取相互关联的点的均值。作为新的簇的中心位置,得到本轮迭代的终于布局(右下)。在每一轮迭代结束后。终于布局将被反馈给相同的循环过程。直到聚类中心的位置不再移动。

使用weka进行聚类:

	public static void main(String[] args) throws Exception {
		// 读入样本数据  
		Instances data = new Instances(new BufferedReader(new FileReader("E:\Weka-3-6\data\contact-lenses.arff")));
		// 实例化化聚类算法
		SimpleKMeans kmeans = new SimpleKMeans();
		//true if missing values are to be replaced
		kmeans.setPreserveInstancesOrder(true);
		//设置聚类要得到的类别数量  
		kmeans.setNumClusters(2);
		//開始进行聚类  
		kmeans.buildClusterer(data);
		// 打印聚类结果  
		int[] assignments = kmeans.getAssignments();
		int i=0;
		for(int clusterNum : assignments) {
		    System.out.printf("Instance %d -> Cluster %d
", i++, clusterNum);
		}
	}


版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/mengfanrong/p/4620110.html