Kmean算法

本文介绍了KMeans聚类算法的基本思想和步骤,包括选择初始中心、迭代更新、聚类中心计算等。通过实例展示了算法的Java实现,包括数据读取、距离计算、聚类中心切换等功能,并提供了简单的测试数据。KMeans算法的关键在于初始中心的选择,其优点是简洁快速,但结果易受初始中心影响。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值