亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kmeans.java

?? 聚類算法kmeans
?? JAVA
字號:
/*
 * Implements the k-means algorithm
 *
 * Manas Somaiya
 * Computer and Information Science and Engineering
 * University of Florida
 *
 * Created: October 29, 2003
 * Last updated: October 30, 2003
 *
 */

import java.io.*;
import java.util.*;
 
 
public class kMeans {


	/** Number of clusters */
	private int k;
	

	/** Array of clusters */
	private cluster[] clusters;
	
	
	/** Number of iterations */
	private int nIterations;
	
	
	/** Vector of data points */
	private Vector<kMeansPoint> kMeansPoints;
	
	
	/** Name of the input file */
	private String inputFileName;
	
	
	/**
	 * Returns a new instance of kMeans algorithm
	 *
	 * @param	k		number of clusters
	 * @param	inputFileName	name of the file containing input data
	 */
         public kMeans(int k, String inputFileName) {
	
		this.k = k;
		this.inputFileName = inputFileName;
		this.clusters = new cluster[this.k];
		this.nIterations = 0;
		this.kMeansPoints = new Vector<kMeansPoint>(1000);
	
	} // end of kMeans()


	/**
	 * Returns a new instance of kMeans algorithm
	 *
	 * @param	k		number of clusters
	 * @param	kMeansPoints	List containing objects of type kMeansPoint
	 */
         public kMeans(int k, List<kMeansPoint> kMeansPoints) {
	
		this.k = k;
		this.clusters = new cluster[this.k];
		this.nIterations = 0;
		this.kMeansPoints=new Vector<kMeansPoint>(kMeansPoints);
	
	} // end of kMeans()
	
	
	/**
	 * Reads the input data from the file and stores the data points in the vector
	 */
	public void readData() throws IOException{
	    ArrayList <Integer> tmp = new ArrayList(3000);
		BufferedReader in = new BufferedReader(new FileReader(this.inputFileName));
		int b;
		
		while ((b= in.read()) != -1 )
		{
			        StringBuilder s = new StringBuilder();
			        while((char)b!=' '&&b!=-1)
			        {
			        	s.append((char)b);
			        	b=in.read();
			        }
			        tmp.add(new Integer(s.toString()));
			       
        }
		Iterator i = tmp.iterator();
		while(i.hasNext())
		{
		  kMeansPoint dp =new kMeansPoint(((Integer)i.next()).intValue(),((Integer)i.next()).intValue());
		  dp.assignToCluster(0);
		  this.kMeansPoints.add(dp); 
		}
		in.close();
	
	} // end of readData()
	
	
	/**
	 * Runs the k-means algorithm over the data set
	 */
	public void runKMeans() {
	
		// Select k points as initial means
		for (int i=0; i < k; i++){
		
			this.clusters[i] = new cluster(i);
			this.clusters[i].setMean((kMeansPoint)(this.kMeansPoints.get((int)(Math.random() * this.kMeansPoints.size()))));
		
		}
		
		
		do {
			// Form k clusters
			Iterator<kMeansPoint> i = this.kMeansPoints.iterator();
			while (i.hasNext())
				this.assignToCluster((kMeansPoint)(i.next()));
				
			this.nIterations++;
		
		}
		// Repeat while centroids do not change
		while (this.updateMeans());
	
	} // end of runKMeans()
	
	
	/**
	 * Assigns a data point to one of the k clusters based on its distance from the means of the clusters
	 *
	 * @param	dp	data point to be assigned
	 */
	private void assignToCluster(kMeansPoint dp) {
	
		int currentCluster = dp.getClusterNumber();
		double minDistance = kMeansPoint.distance(dp, this.clusters[currentCluster].getMean());;
		
		for (int i=0; i <this.k; i++)
			if (kMeansPoint.distance(dp, this.clusters[i].getMean()) < minDistance) {
		
				minDistance = kMeansPoint.distance(dp, this.clusters[i].getMean());
				currentCluster = i;
				
			}
		
		dp.assignToCluster(currentCluster);	
	
	} // end of assignToCluster
	
	
	/**
	 * Updates the means of all k clusters, and returns if they have changed or not
	 *
	 * @return	have the updated means of the clusters changed or not
	 */
	private boolean updateMeans() {
	
		boolean reply = false;
		
		int[] x = new int[this.k];
		int[] y = new int[this.k];
		int[] size = new int[this.k];
		kMeansPoint[] pastMeans = new kMeansPoint[this.k];
		
		for (int i=0; i<this.k; i++) {
		
			x[i] = 0;
			y[i] = 0;
			size[i] = 0;
			pastMeans[i] = this.clusters[i].getMean();
		
		}
		
		Iterator <kMeansPoint>i = this.kMeansPoints.iterator();
		while (i.hasNext()) {
		
		
			kMeansPoint dp = (kMeansPoint)(i.next());
			int currentCluster = dp.getClusterNumber();
			
			x[currentCluster] += dp.getX();
			y[currentCluster] += dp.getY();
			size[currentCluster]++;
		
		}
		
		for (int j=0; j < this.k; j++ ) 
			if(size[j] != 0) {
			
				x[j] /= size[j];
				y[j] /= size[j];
				kMeansPoint temp = new kMeansPoint(x[j], y[j]);
				temp.assignToCluster(j);
				this.clusters[j].setMean(temp);
				if (kMeansPoint.distance(pastMeans[j], this.clusters[j].getMean()) !=0 )
					reply = true;
					
			}
		
		return reply;
		
	} // end of updateMeans()


	/**
	 * Returns the value of k
	 *
	 * @return	the value of k
	 */
	public int getK() {

		return this.k;

	} // end of getK()
	
	
	/**
	 * Returns the specified cluster by index
	 *
	 * @param	index	index of the cluster to be returned
	 * @return	return the specified cluster by index
	 */
	public cluster getCluster(int index) {
	
		return this.clusters[index];
	
	} // end of getCluster()
        
        
	/**
	 * Returns the string output of the data points
	 *
	 * @return  the string output of the data points
	 */
	public String toString(){
            
		return this.kMeansPoints.toString();
            
	} // end of toString()
        
        
	/**
	 * Returns the data points
	 *
	 * @return  the data points
	 */
	public Vector<kMeansPoint> getDataPoints() {
            
		return this.kMeansPoints ;
            
	} // end of getDataPoints()
        
        
	/**
	 * Main method -- to test the kMeans class
	 *
	 * @param   args    command line arguments
	 */
	public static void main(String[] args) {
            
		kMeans km = new kMeans(2, "outDATA");
		
		try {
			km.readData();
		} catch (Exception e) {
			System.err.println(e);
			System.exit(-1);
		}
            
		km.runKMeans();
		Vector<Vector<kMeansPoint>> vec = new Vector(5);
		for(int i=0;i<5;i++)
		{
			Vector<kMeansPoint> tmp = new Vector(1000);
			vec.add(tmp);
		}
		Iterator i = km.getDataPoints().iterator();
		Iterator j = vec.iterator();
		
		while(i.hasNext())
		{
			kMeansPoint p;
			p = (kMeansPoint)i.next();
			vec.get(p.getClusterNumber()).add(p);
			System.out.println(p.getClusterNumber());
		}
		try
		{

		PrintWriter out = new PrintWriter(new FileOutputStream("out"),true);
		   while(j.hasNext())
		   {
			   out.print('[');
			   Iterator p = ((Vector<kMeansPoint>) j.next()).iterator();
			   while(p.hasNext())
			   {
				   kMeansPoint point;
				   point = (kMeansPoint)p.next();
				   out.print(point.getX());
				   out.print(' ');
				   out.print(point.getY());
				   out.print(' ');
			   }
			   out.print(']');
			   out.println();			
		   }
		   out.close();
		}
		catch(Exception error)
		{
			System.out.println("io error");
		}
        
                    
     } 

} // end of class

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线国产电影不卡| 成人小视频免费在线观看| 色国产综合视频| 奇米影视一区二区三区| 国产欧美视频在线观看| 色噜噜久久综合| 日韩电影在线看| 欧美国产1区2区| 欧美另类z0zxhd电影| 日韩精品一级中文字幕精品视频免费观看 | 99久久综合狠狠综合久久| 亚洲同性gay激情无套| 欧美成人video| 97久久精品人人澡人人爽| 久久99热99| 性久久久久久久久久久久| 国产欧美一二三区| 欧美一区二区播放| 欧美在线视频全部完| 99综合影院在线| 精品一区二区三区视频 | 欧美巨大另类极品videosbest | 亚洲综合精品自拍| 26uuu亚洲综合色| 欧美性一级生活| 99免费精品视频| 精品无人区卡一卡二卡三乱码免费卡| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲精品你懂的| 国产精品久久综合| 精品久久久久久久久久久久包黑料 | 夜夜嗨av一区二区三区四季av| 日韩亚洲欧美一区二区三区| 欧美久久高跟鞋激| 色综合天天综合狠狠| 国产精品伊人色| 久久99久国产精品黄毛片色诱| 亚洲国产精品一区二区久久| 亚洲伦理在线免费看| 欧美经典一区二区| 精品国产乱码久久久久久老虎| 欧美剧在线免费观看网站| 欧美日韩美女一区二区| 91福利精品第一导航| 99国产精品久久久久久久久久久| 久久av资源网| 久久国产精品无码网站| 秋霞国产午夜精品免费视频 | 国产精品亚洲一区二区三区妖精| 青青草国产精品亚洲专区无| 亚洲电影第三页| 亚洲成人免费观看| 亚洲午夜免费福利视频| 一区二区三区四区蜜桃| 一色屋精品亚洲香蕉网站| 国产精品国产馆在线真实露脸| 国产精品三级久久久久三级| 久久精品夜夜夜夜久久| 日韩欧美中文字幕制服| 精品国产亚洲在线| 精品国产乱码久久久久久蜜臀| 欧美v日韩v国产v| 日本一区二区三区国色天香| 国产精品九色蝌蚪自拍| 亚洲欧洲国产日韩| 国产欧美精品日韩区二区麻豆天美| 国产精品久久久久国产精品日日| 中文字幕一区在线| 亚洲免费观看高清| 欧美乱妇一区二区三区不卡视频| 日韩欧美一区二区免费| 久久亚洲二区三区| 国产精品久久久久久久裸模| 亚洲国产日韩精品| 喷水一区二区三区| 国产乱码精品一区二区三区av | 亚洲男女一区二区三区| 亚洲欧美激情一区二区| 日本系列欧美系列| 久久疯狂做爰流白浆xx| 国产成人精品亚洲午夜麻豆| 99久久精品国产观看| 欧美精品日韩综合在线| 欧美videos大乳护士334| 久久久久国产精品麻豆ai换脸| 久久久久青草大香线综合精品| 亚洲精品一二三区| 日本午夜精品一区二区三区电影 | 亚洲精品欧美在线| 麻豆国产精品777777在线| 国产高清亚洲一区| 欧洲精品视频在线观看| 久久免费的精品国产v∧| 亚洲嫩草精品久久| 日韩精品福利网| 国产不卡免费视频| 欧美日韩国产影片| 久久精品视频免费| 亚洲一区国产视频| 日精品一区二区三区| 国产91精品欧美| 欧美日韩国产影片| 国产欧美综合色| 亚洲aⅴ怡春院| 成人avav在线| 日韩免费成人网| 国产女人18毛片水真多成人如厕| 亚洲一区在线视频| 国产剧情在线观看一区二区| 欧美日韩国产精品自在自线| 国产欧美日韩亚州综合 | 久久久久久久久久久久电影| 亚洲欧美日韩一区二区三区在线观看 | 日韩一区二区三区在线视频| ww亚洲ww在线观看国产| 亚洲国产精品一区二区久久| 国产·精品毛片| 日韩视频免费观看高清在线视频| 一个色在线综合| 丁香婷婷深情五月亚洲| 日韩女优制服丝袜电影| 亚洲国产精品v| 韩国v欧美v亚洲v日本v| 欧美日韩久久久久久| 成人欧美一区二区三区视频网页| 久久激情五月激情| 欧美体内she精高潮| 中文字幕一区二区三区四区不卡| 国产成人一区在线| 精品久久久久久久久久久久久久久 | 国产精品欧美综合在线| 9i在线看片成人免费| 欧美福利视频一区| 亚洲伊人色欲综合网| gogogo免费视频观看亚洲一| 久久精品亚洲精品国产欧美kt∨| 免费观看一级欧美片| 欧美日韩精品福利| 日韩av中文字幕一区二区三区| 欧美日韩午夜在线| 亚洲成a人v欧美综合天堂下载 | 久久美女艺术照精彩视频福利播放| 午夜国产不卡在线观看视频| 欧美视频第二页| 亚洲成人av一区二区三区| 欧美中文一区二区三区| 偷拍一区二区三区四区| 欧美一区二区人人喊爽| 久久99精品国产麻豆不卡| 欧美精品一区二区三| 国产精品伊人色| 国产精品理伦片| 在线观看日韩精品| 日韩国产一二三区| 久久久久免费观看| 99免费精品视频| 亚洲h动漫在线| 日韩精品一区二区三区中文精品| 国产一区不卡在线| 最新日韩在线视频| 欧美在线看片a免费观看| 日本91福利区| 久久久综合视频| 99视频国产精品| 亚洲五码中文字幕| 欧美不卡123| fc2成人免费人成在线观看播放 | 欧美一区二区黄色| 精品中文字幕一区二区小辣椒| 亚洲精品一区二区三区蜜桃下载| 成人免费视频app| 亚洲成av人片一区二区三区| 日韩你懂的在线播放| jlzzjlzz亚洲日本少妇| 亚洲va国产天堂va久久en| 2020国产精品自拍| 在线欧美小视频| 狠狠色丁香婷婷综合| 一区二区三区欧美日韩| 欧美电影免费观看高清完整版在线观看| 国产成人自拍网| 午夜av区久久| 欧美高清在线精品一区| 欧美三级日韩三级国产三级| 国产在线国偷精品产拍免费yy| 亚洲精品中文在线影院| 欧美成人aa大片| 在线免费视频一区二区| 国产在线视频一区二区| 亚洲午夜电影网| 国产精品久久久久影视| 日韩一区二区三区四区| 色噜噜狠狠色综合中国| 久久超碰97人人做人人爱| 亚洲女同ⅹxx女同tv| 久久丝袜美腿综合| 5月丁香婷婷综合| 色综合天天天天做夜夜夜夜做| 久久99精品国产| 亚洲电影一区二区三区|