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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmeans.cpp

?? K-means一個用C++實現的聚類算法
?? CPP
字號:
    /*****************************************************************
      這個程序是實現了一個聚類CMI算法,對給定一個數據集,按要求將其劃分為
	  三個類,并計算其分類的效率,并給出一定的結果比較及輸出!!
********************************************************************/
#include<fstream.h>
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#include<math.h>
#include <stdio.h>
#include <set>
const int c=3;
const int dim=5;//數據的維數
const int size=150;//表明數據集的大小;
class cluster;
//////定義一個數據單元的類
class metadata{
	public:
	int tag;//定義數據數元的標記,如屬于某一類;
	double value[dim];//定義數據單元的值;
//	friend class data;
	friend class cluster;
	 metadata(){}
	 metadata(double tvalue[]){
		for(int j=0;j<dim;j++){
			value[j]=tvalue[j];}
         tag=int(value[4]);
         }
};

///////////定義一個cluster集,并進行分類
class cluster{
public:
	int clustersize[3];//表示類的大小
	metadata clustersample[size];//表示每類中的樣本集
	metadata clustercenter[c];//每類樣本的中心
	cluster(metadata initdata[]){
		for(int j=0;j<size;j++){
			//clustersample[j](initdata[j]);
			for(int i=0;i<dim;i++){
			clustersample[j].value[i]=initdata[j].value[i];}
		clustersample[j].tag=int(initdata[j].value[4]);
		}
				
			
			
			//clustercenter=
		initcenter(clustersample);
		///////測試//////////////////
		cout<<"the initial cluster center is:"<<endl;
		for(int m=0;m<c;m++){
			for(int n=0;n<dim;n++){
		cout<<setw(4)<<clustercenter[m].value[n]<<' ';
			}
			cout<<endl;
		}
		///////////////////////
			for(int k=0;k<c;k++)
 				clustersize[k]=0;
	}
/*	///////重載=號運算符
	metadata operator =(metadata sample){
		metadata temp;
		for(int i=0;i<=dim;i++){
			temp.value[i]=sample.value[i];}
		temp.tag=sample.tag;
		return temp;
	}*/
/*	metadata operator =(metadata sample[]){
		metadata temp[3];
		for(int i=0;i<3;i++){
			temp[i]=sample[i];
		}
	}*/


/////////取得初始的類中心
void  initcenter(metadata clustersample[]){
//        float t=0.7;
         double temp=0;
         double maxdistance=0;
         double mindistance=0;
        // metadata clustercenter[c];
         clustercenter[0]=clustersample[0];
         for(int i=0;i<=size-1;i++){
                 temp=distance(clustercenter[0],clustersample[i]);
                 if(maxdistance<=temp){
                                        maxdistance=temp;
                                        clustercenter[1]=clustersample[i];
                                        }
                 }
		  temp=0;
         for(int k=0;k<=size-1;k++){
                 double a=distance(clustercenter[0],clustersample[k]);
                 double b=distance(clustercenter[1],clustersample[k]);
                 if(a<=b)
                         {mindistance=a;
                         if(mindistance>=temp){
                                       temp=mindistance;
                                       clustercenter[2]=clustersample[k];
                                       }
				 }
                 else 
                      {mindistance=b;
                      if(mindistance>=temp){
                                       temp=mindistance;
                                       clustercenter[2]=clustersample[k];
                                       }
                      }
		 }
         //return clustercenter;
}
////////距離函數
static   double distance(metadata x,metadata y){
           //metadata x=x;
           //metadata y=y;
           double distance;
           double temp=0;
           double dis=0;
           for(int i=0;i<=dim-1;i++){
                   temp=x.value[i]-y.value[i];
                   temp=temp*temp;
                   dis=dis+temp;
                   }
           distance=dis;
           return distance;        
          
}
	/////求新的類中心的函數
/*  static	metadata newcenter(metadata tempcluster[],int j)
	{
		//metadata tempcluster=tempcluster;
		metadata tempcenter;
		//int j=j;
		int n=0;
		for(int i=0;i<4;i++)tempcenter.value[i]=0;
		tempcenter.value[4]=j;
		for(int k=0;k<size;k++){
			if(tempcluster[k].value[4]==j)
			{for(int l=0;l<4;l++){
				tempcenter.value[l]=tempcenter.value[l];
			}
			n++;
			}
		}
			for(int h=0;h<3;h++){
				tempcenter.value[h]=tempcenter.value[h]/n;
			}
	
			return tempcenter;
			
} */
	
	
/*//////進行打印并對所得數據和原始數據進行比較 
    void clusterprint(int it){
		 //int it=it;
		 cout<<"the number of the iterance to abtain the cluster is:"<<it<<endl;
		 cout<<"the final cluster center is:"<<endl;
		 for(int j=0;j<c;j++){
			 for(int i=0;i<dim;i++){
				 cout<<setw(4)<<clustercenter[j].value[i]<<' ';
			 }
		 cout<<endl;
		}
	 }
///////////////////////////////////////////////////////////*/
		 void cmp(metadata initcluster[]){
			 int wrong=0;
			 //metadata initcluster[size]=initcluster;
			 cout<<"the first column is the cluster in fact;"<<endl;
			 cout<<"the second column is expected cluster the data belong to;"<<endl;
			 for(int i=0;i<size;i++)
			 {
				 int t=int(clustersample[i].value[4]);
				 if(t==1)t=2;
				 else if(t==2)t=1;
				 cout<<setw(4)<<t<<setw(4)<<initcluster[i].value[4]<<endl;
				 switch(t){
				 case 0: clustersize[0]++;break;
				 case 1: clustersize[1]++;break;
				 case 2: clustersize[2]++;break;
				 default:break;}
					 if(t!=initcluster[i].value[4])wrong++;
			 }
			 cout<<"the number of cluster that is wrongly classified is:"<<wrong<<endl;


		 }
///////進行分類
  double cmeans(){
		int it=1;
		double a,b,d;
		double th=0.001;
		metadata tempcenter[3];
		int lable=0;
		//clustercenter=initcenter(clustersample);
		//cout<<"begin"<<endl;
		//////進行初步的分類
		/*	///////測試//////////////////
		cout<<"the initial cluster center is:"<<endl;
		for(int m=0;m<c;m++){
			
			for(int n=0;n<dim;n++){
		cout<<setw(4)<<clustercenter[m].value[n]<<' ';
			}
			cout<<endl;
		}
		/////////////////////// */
		do{
		for(int i=0;i<150;i++){
			a=distance(clustercenter[0],clustersample[i]);
			b=distance(clustercenter[1],clustersample[i]);
			d=distance(clustercenter[2],clustersample[i]);
			if(a<=b&&a<=d)clustersample[i].value[4]=0;
			if(b<=a&&b<=d)clustersample[i].value[4]=1;
			if(d<=a&&d<=b)clustersample[i].value[4]=2;
					
		}
/*		 //////////測試數據/////////////////////////
	 for(int k=0;k<size;k++){
		 for(int l=0;l<dim;l++){
			 cout<<setw(4)<<clustersample[k].value[l]<<' ';
					  
		 }
		 cout<<endl;
	 }
	 ////////////////////////////////  */
		cout<<"continue"<<endl; 
		//////得到新類后求新類的中心
		for(int j=0;j<c;j++)//tempcenter[j]=newcenter(clustersample,j);
		{
			int n=0;
		for(int i=0;i<4;i++)tempcenter[j].value[i]=0;
		tempcenter[j].value[4]=j;
		for(int k=0;k<size;k++){
			if(clustersample[k].value[4]==j)
			{for(int l=0;l<4;l++){
				tempcenter[j].value[l]=tempcenter[j].value[l]+clustersample[k].value[l];
			}
			n++;
			}
		}
	//	cout<<"fsfsdafasf"<<n<<endl;
			for(int h=0;h<4  ;h++){
				tempcenter[j].value[h]=tempcenter[j].value[h]/n;
			}
		}
		///////
			 for(int y=0;y<c;y++){
			 for(int i=0;i<dim;i++){
				 cout<<setw(4)<<tempcenter[y].value[i]<<' ';
			 }
		 cout<<endl;
		}
		////////
		it++;
		a=distance(clustercenter[0],tempcenter[0]);
		b=distance(clustercenter[1],tempcenter[1]);
		d=distance(clustercenter[2],tempcenter[2]);
		if(a<=th&&b<=th&&d<=th)lable=0;
		else lable=1;
		/*if(it>100){
			lable=0;
			cout<<"numbers of iteration exceeded;"<<endl;
			return 0;
		}*/
		for(int w=0;w<dim;w++){
			clustercenter[0].value[w]=tempcenter[0].value[w];
		clustercenter[1].value[w]=tempcenter[1].value[w];
		clustercenter[2].value[w]=tempcenter[2].value[w];
        }
		}while(lable);


	cout<<"the number of the iterance to abtain the cluster is:"<<it<<endl;
		 cout<<"the final cluster center is:"<<endl;
		 for(int j=0;j<c;j++){
			 for(int i=0;i<dim;i++){
				 cout<<setw(4)<<clustercenter[j].value[i]<<' ';
			 }
		 cout<<endl;
		}
	cout<<"done!"<<endl;
   return 0;

	}

};

///////////主函數
void main()
{
     double temp[dim];
     metadata initdata[size];
    // cluster initcluster;
     //cluster finalcluster;
	 ifstream file1("E:\\test\\iris.dat");
	 int j=0;
	 while(!file1.eof()){
		 file1>>temp[0]>>temp[1]>>temp[2]>>temp[3]>>temp[4];
						  
						  for(int k=0;k<dim;k++){
			initdata[j].value[k]=temp[k];}
         initdata[j].tag=int(temp[4]); 
                          //initdata[j](temp);
                          j++;
                          }
/*	 //////////測試數據/////////////////////////
	 for(int k=0;k<size;k++){
		 for(int l=0;l<dim;l++){
			 cout<<setw(4)<<initdata[k].value[l]<<' ';
					  
		 }
		 cout<<endl;
	 }
	 ////////////////////////////////   */
	   //file1.close();
	   cluster finalcluster(initdata);
	   //cout<<"all over"<<endl;
       finalcluster.cmeans();
	   finalcluster.cmp(initdata);
	  
	   system("pause");
	 


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情欧美日韩一区二区| 亚洲老司机在线| 国产一区二区三区免费看| 中文字幕视频一区| 91网站在线观看视频| 一区二区三区中文字幕| 欧美手机在线视频| 免费人成在线不卡| 国产女主播一区| 91免费在线播放| 偷偷要91色婷婷| 精品国产一区二区在线观看| 国产91精品入口| 亚洲一区二区三区自拍| 91精品国产色综合久久不卡蜜臀 | 久久福利视频一区二区| 久久蜜桃av一区精品变态类天堂| 风间由美性色一区二区三区| 亚洲欧美日韩系列| 91精品在线观看入口| 国产91对白在线观看九色| 亚洲精品视频免费看| 91精品国产综合久久香蕉麻豆| 九九视频精品免费| 日韩码欧中文字| 日韩三级中文字幕| 国产mv日韩mv欧美| 亚洲va欧美va人人爽午夜 | 日韩视频免费观看高清在线视频| 国产jizzjizz一区二区| 亚洲综合区在线| 水野朝阳av一区二区三区| 国产亚洲欧洲一区高清在线观看| 在线欧美日韩国产| 粉嫩高潮美女一区二区三区| 亚洲午夜电影网| 国产欧美精品一区二区色综合 | 国产三级精品在线| 欧美无乱码久久久免费午夜一区| 国产福利精品一区二区| 亚洲国产精品久久久久秋霞影院| 久久精品夜色噜噜亚洲a∨| 欧美日韩亚洲高清一区二区| 丁香天五香天堂综合| 三级成人在线视频| 亚洲欧美乱综合| 欧美激情资源网| 欧美videos大乳护士334| 日本精品一级二级| 本田岬高潮一区二区三区| 蜜臀av一区二区在线免费观看| 一区二区三区日本| 国产精品视频看| 国产亚洲欧美一区在线观看| 欧美一级片免费看| 欧美视频精品在线观看| 91理论电影在线观看| 欧美精品一区二区在线观看| 在线观看成人小视频| av不卡免费在线观看| 国产一区三区三区| 日本不卡123| 免费欧美日韩国产三级电影| 亚洲国产精品久久人人爱蜜臀| 亚洲男人的天堂av| 中文字幕亚洲不卡| 亚洲色图欧美偷拍| 成人免费在线观看入口| 国产精品天美传媒| 中文字幕av在线一区二区三区| 欧美精品一区视频| 久久久久久久久久久黄色| 精品国产凹凸成av人网站| 日韩欧美一区在线观看| 欧美一级欧美一级在线播放| 91精品国产麻豆国产自产在线 | 色综合天天天天做夜夜夜夜做| 国产精品18久久久久久久久久久久| 秋霞午夜鲁丝一区二区老狼| 日韩精品一级二级| 免费人成网站在线观看欧美高清| 免费成人你懂的| 国产一区二区毛片| 国产成人免费视频网站| 丰满放荡岳乱妇91ww| 99精品一区二区三区| 91啪在线观看| 欧美日韩精品一区二区天天拍小说| 欧美日韩午夜影院| 欧美一区二区国产| 久久精品一区四区| 亚洲啪啪综合av一区二区三区| 夜夜操天天操亚洲| 蜜桃视频在线观看一区二区| 精品一区二区三区在线播放视频 | 欧美一区二区三区免费| 日韩欧美www| 国产精品少妇自拍| 亚洲综合激情另类小说区| 日韩国产精品久久久| 久久国产精品色| 成人av免费在线观看| 欧美性色黄大片手机版| 日韩一区二区影院| 亚洲国产精品99久久久久久久久| 亚洲三级在线观看| 久久精品国产一区二区三| 国产91富婆露脸刺激对白| 欧美亚洲国产bt| 日韩欧美自拍偷拍| 综合色中文字幕| 日本在线不卡一区| 福利一区二区在线| 欧美日韩亚洲国产综合| 久久久国产午夜精品| 亚洲精品乱码久久久久久| 免费成人在线观看| 色综合久久久久久久| 日韩欧美国产系列| 亚洲猫色日本管| 国产一区二区精品在线观看| 在线观看亚洲a| 国产亚洲欧美中文| 日本特黄久久久高潮| 91麻豆免费观看| 久久先锋资源网| 亚洲1区2区3区视频| 丁香五精品蜜臀久久久久99网站| 欧美日韩精品久久久| 欧美国产激情一区二区三区蜜月 | 亚洲日本免费电影| 久久99精品久久久久久国产越南 | 久久99精品国产麻豆婷婷 | 欧美猛男gaygay网站| 国产欧美精品在线观看| 视频一区二区中文字幕| 97se亚洲国产综合自在线观| 日韩精品一区二区三区老鸭窝| 亚洲美女视频在线观看| 欧美不卡激情三级在线观看| 亚洲成人免费看| 91蜜桃免费观看视频| 国产欧美一区二区精品忘忧草| 日本一不卡视频| 欧美综合天天夜夜久久| 国产精品久久久99| 国产一区二区精品久久| 日韩精品一区二区三区四区视频| 亚洲一区二区三区四区不卡| 97精品视频在线观看自产线路二| 久久久精品综合| 激情五月婷婷综合网| 欧美一区二区视频在线观看2022| 一区二区久久久| 一本色道久久综合狠狠躁的推荐| 国产亚洲欧洲一区高清在线观看| 免费看日韩a级影片| 91麻豆精品国产无毒不卡在线观看| 亚洲精品免费一二三区| 97se亚洲国产综合自在线| 国产精品色眯眯| 成人免费高清在线观看| 欧美国产日韩亚洲一区| 国产福利电影一区二区三区| 久久精品一区二区三区av| 国产精品自拍av| 国产亚洲一区二区三区在线观看 | 欧美国产精品中文字幕| 成人中文字幕合集| 中文字幕乱码日本亚洲一区二区| 国产v日产∨综合v精品视频| 国产日本一区二区| youjizz久久| 97久久超碰国产精品| 亚洲欧洲成人自拍| 91首页免费视频| 亚洲黄色在线视频| 欧美怡红院视频| 日韩电影在线免费观看| 日韩一卡二卡三卡四卡| 韩国v欧美v日本v亚洲v| 国产欧美一区二区精品仙草咪| heyzo一本久久综合| 一区二区久久久久久| 91精品国产手机| 国产福利精品导航| 亚洲精品精品亚洲| 欧美理论片在线| 国产原创一区二区| 国产精品福利一区| 欧美日韩一二三| 久久国产三级精品| 亚洲国产激情av| 91国偷自产一区二区三区成为亚洲经典 | 伊人夜夜躁av伊人久久| 欧美美女一区二区在线观看| 捆绑变态av一区二区三区| 国产调教视频一区| 色久优优欧美色久优优| 日本网站在线观看一区二区三区|