cluster.java

来自「聚类算法」· Java 代码 · 共 83 行

JAVA
83
字号
package cluster.kmeans;

import java.util.Vector;

/**
 * This class represents a Cluster in a Cluster Analysis Instance. A Cluster is
 * associated with one and only one JCA Instance. A Cluster is related to more
 * than one DataPoints and one centroid.
 * 
 * @author bigjava
 * @version 1.1
 * @see DataPoint
 * @see Centroid
 */

class Cluster {
	private String mName;

	private Centroid mCentroid;

	private double mSumSqr;

	private Vector mDataPoints;

	public Cluster(String name) {
		this.mName = name;
		this.mCentroid = null; // will be set by calling setCentroid()
		mDataPoints = new Vector();
	}

	public void setCentroid(Centroid c) {
		mCentroid = c;
	}

	public Centroid getCentroid() {
		return mCentroid;
	}

	public void addDataPoint(DataPoint dp) { // called from CAInstance
		dp.setCluster(this); // initiates a inner call to calc
								// EuclideanDistance() in DP.
		this.mDataPoints.addElement(dp);
		calcSumOfSquares();
	}

	public void removeDataPoint(DataPoint dp) {
		this.mDataPoints.removeElement(dp);
		calcSumOfSquares();
	}

	public int getNumDataPoints() {
		return this.mDataPoints.size();
	}

	public DataPoint getDataPoint(int pos) {
		return (DataPoint) this.mDataPoints.elementAt(pos);
	}

	public void calcSumOfSquares() { // called from Centroid
		int size = this.mDataPoints.size();
		double temp = 0;
		for (int i = 0; i < size; i++) {
			temp = temp
					+ ((DataPoint) this.mDataPoints.elementAt(i))
							.getCurrentEuDt();
		}
		this.mSumSqr = temp;
	}

	public double getSumSqr() {
		return this.mSumSqr;
	}

	public String getName() {
		return this.mName;
	}

	public Vector getDataPoints() {
		return this.mDataPoints;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?