数据挖掘之KMEANS算法

KMeans算法的代码实现。

这是我学习数据挖掘KMEans算法的一个简明版本。

这个代码比较简单。

package cluster;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Cluster {
	private double ClusterCenter;
	private double[] ClusterData;
	private List listData;
	public Cluster(double ClusterCenter){
		this.ClusterCenter=ClusterCenter;
		init();
	}
	private void init(){
		double[] data=new double[1];
		//data[0]=1e308;
		ClusterData=data;
		listData=new ArrayList();
	}
	/**
	 * 分配数据给该数据中心函数
	 * */
	public void AssDPToCCenter(double datapoint){
		listData.add(datapoint);
		double datas[]=new double[listData.size()];
		for(int i=0;ipackage K_MEANS;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import Matrix.Matrix;
import cluster.Cluster;
import cluster.MathUtil;

/**
 * @param K为聚类的个数
 * @param data为聚类的数据
 * @param cluster聚类数
 * @param MaxIterateStep最大迭代数
 * */
public class K_MEANS {
	public int K;
	public double[] data;
	public Cluster[] clusters;
	public K_MEANS(int K,double[] data){
		this.K=K;
		if(K>data.length){
			this.K=data.length;
		}
		this.data=data;
		init();
	}
	/***
	 * 初始化
	 * */
	private void init(){
		this.clusters=new Cluster[K];
		int[] intArrs=getTempArrays();
		for(int i=0;i listVar=new ArrayList();
		while(true){
			AssignDataToCenter(data);
			double VAR=getTotalVAR();
			listVar.add(VAR);
			if(listVar.size()>2){	
				if(Math.abs(listVar.get(listVar.size()-2)-(listVar.get(listVar.size()-1)))this.MaxIterateSteps){
//					break;
//				}
			}
			reGetCenter(eps);
			clearData();
			i++;
		}
	}
	/**
	 * 获得所有聚类区域的方差和
	 * */
	public double getTotalVAR(){
		double VAR=0;
		for(int i=0;i

package Single_Regression;


public class Regression {
	public static double getArraySUM(double[] data){
		double sum=0;
		for(int i=0;i

System.out.println("center="+center);if(center==1e308){try{throw new Exception("不好意思,出了差错");}catch(Exception e){e.printStackTrace();}}this.ClusterCenter=center;return this.ClusterCenter;}public void setClusterData(double[] clusterData) {ClusterData = clusterData;}/** * 获得当前聚类的大小 * */public int getSize(){return this.ClusterData.length;}public double getClusterCenter() {return ClusterCenter;}public void setClusterCenter(double clusterCenter) {ClusterCenter = clusterCenter;}/** * toString方法 * */public String toString(){return "ClusterCenter="+this.ClusterCenter+","+Arrays.toString(ClusterData);}public double[] getClusterData() {return ClusterData;}/** * 清空cluster数据区域 * */public void clearData(){this.listData.clear();}}




你可能感兴趣的:(数据挖掘Java版本算法,java工具类,数据结构,java,class,KMEANS)