Kmean算法

Kmeans算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。Kmeans算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
假设要把样本集分为K个类别,算法描述如下:
(1)适当选择K个聚类的初始中心;
(2)在第K次迭代中,对任意一个样本,求其到K个中心的距离,将该样本归到距离最短的中心所在的簇;
(3)重新计算各个簇(聚类)的中心;
(4)对于所有的K个聚类中心,如果利用(2)(3)反复迭代,重新计算新旧中心的距离,若距离不变或小于某个阀值,则迭代结束。
该算法的最大优势在于简洁和快速。算法的关键在于初始中心的选择和距离公式。
这里最关键的地方就是初始中心K的选择,这里的选择好坏会很大程度上影响最终聚类的结果。
算法实现:下面简单利用距离计算方式演示聚类效果:
package com.wxshi.kmean;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * Kmeans算法演示
 * @author wxshi
 *
 */
public class Kmeans {

	private List<ArrayList<Double>> centers;
	private List<ArrayList<Double>> newCenters;
	private List<ArrayList<ArrayList<Double>>> clusterList;
	private int clusterNum = 5; //默认聚类的个数

	/**
	 * 默认构造不对外抛
	 */
	private Kmeans(){

	}

	public Kmeans(int clusterNum){
		if(clusterNum<=0){
			clusterNum = 5;
		}
		this.clust
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值