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

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

?? main.cpp

?? 模糊K近鄰分類器
?? CPP
字號:
//控制整個程序的執行流程--訓練,測試

#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include "FuzzyNN.h"
#include "feedfoward.h"
#include "fence.h"
#include "pecfuh.h"
#include "mpecfuh.h"
#include "tools.h"
#include "MLVQ.h"
#include "plvq.h"

void main()
{
	//輸入程序需要的參數L,N
	int L; //輸入層結點數
	int N; //輸出層結點數
	int i,j,k;

	cout<<"請輸入輸入層的結點數:"<<endl;
	cin>>L;
	cout<<"請輸入輸出層的結點數:"<<endl;
	cin>>N;

	//網絡結構的初始化
	ProtoNode *prototype;
	prototype=new ProtoNode[N+1];
	mcheck(prototype);
	for(j=1;j<=N;j++)
	{
		prototype[j].w=new FuzzyNum[L+1];
		mcheck(prototype[j].w);
		prototype[j].g=new int[N+1];
		mcheck(prototype[j].g);
	}
	ExemNode *exemplar=NULL; //exemplar是作為動態鏈表來處理的

	//讀入數據,分別構造訓練樣本和測試樣本
	int DataNum;
	int TrainNum;
	int TestNum;
	cout<<"請輸入數據樣本的總數:"<<endl;
	cin>>DataNum;
	cout<<"請輸入用作訓練樣本的個數:"<<endl;
	cin>>TrainNum;
	TestNum=DataNum-TrainNum;

	double **data;
	data=new double *[DataNum+1];
	mcheck(data);
	for(i=1;i<=DataNum;i++)
	{
		data[i]=new double[L+2]; //L個feature,1個期望輸出
		mcheck(data[i]);
	}

	ifstream ifs;
/*	
	ifs.open("c:\\iris1.dat");
    for(i=1;i<=DataNum;i++)
	{
		for(j=1;j<=L+1;j++)
		{
			ifs>>data[i][j];
		}
	}
*/	
	//~heart_scale數據的讀取
	ifs.open("c:\\data.txt");
    double ttemp;
	for(i=1;i<=DataNum;i++)
	{
		for(j=1;j<=L+1;j++)
		{
			ifs>>data[i][j];
		}
		ttemp=data[i][1];
		data[i][1]=data[i][L+1];
		data[i][L+1]=ttemp;
	}

	ifs.close();
	
    
	//-將讀入的數據規范化
	double *max;
	double *min;
	max=new double[L+1];
	mcheck(max);
	min=new double[L+1];
	mcheck(min);

	for(j=1;j<=L;j++)
	{
		max[j]=data[1][j];
		min[j]=data[1][j];
	}
	for(i=2;i<=DataNum;i++)
		for(j=1;j<=L;j++)
			if(data[i][j]>max[j])max[j]=data[i][j];
			else if(data[i][j]<min[j])min[j]=data[i][j];

	for(i=1;i<=DataNum;i++)
		for(j=1;j<=L;j++)
			data[i][j]=(data[i][j]-min[j])/(max[j]-min[j]);
    

	//-將規范化后的數據擴展成為模糊數
	FuzzyNum **Fuzzydata;
	Fuzzydata=new FuzzyNum *[DataNum+1];
	mcheck(Fuzzydata);
	for(i=1;i<=DataNum;i++)
	{
		Fuzzydata[i]=new FuzzyNum[L+1];
		mcheck(Fuzzydata[i]);
	}
	for(i=1;i<=DataNum;i++)
		for(j=1;j<=L;j++)
		{
			Fuzzydata[i][j].w1=data[i][j];
			Fuzzydata[i][j].w2=data[i][j];
			Fuzzydata[i][j].a=0;
			Fuzzydata[i][j].b=0;
		}
	int *output; //Fuzzydata表示特征,output表示相應的期望輸出
	output=new int[DataNum+1];
	mcheck(output);
	for(i=1;i<=DataNum;i++)
		output[i]=(int)data[i][L+1];

	//生成訓練樣本集合
	FuzzyNum **Train;
	int *Train_out;
	Train=new FuzzyNum *[TrainNum+1];
	mcheck(Train);
	for(i=1;i<=TrainNum;i++)
	{
		Train[i]=new FuzzyNum[L+1];
		mcheck(Train[i]);
	}
	Train_out=new int[TrainNum+1];
	mcheck(Train_out);

	//下面的這部分代碼段只是針對與iris這個特定的應用來寫的,并
	//沒有做到一般化
/*	
	int class1[25+1];
	int class2[25+1];
	int class3[25+1];

	myrand(25,class1,1,50);
	myrand(25,class2,51,100);
	myrand(25,class3,101,150);
    
	 
	for(i=1;i<=25;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class1[i]][j].w1;
            Train[i][j].w2=Fuzzydata[class1[i]][j].w2;
			Train[i][j].a=Fuzzydata[class1[i]][j].a;
			Train[i][j].b=Fuzzydata[class1[i]][j].b;
		}
		Train_out[i]=output[class1[i]];
	}
    for(i=26;i<=50;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class2[i-25]][j].w1;
            Train[i][j].w2=Fuzzydata[class2[i-25]][j].w2;
			Train[i][j].a=Fuzzydata[class2[i-25]][j].a;
			Train[i][j].b=Fuzzydata[class2[i-25]][j].b;
		}
		Train_out[i]=output[class2[i-25]];
	}
	for(i=51;i<=75;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class3[i-50]][j].w1;
            Train[i][j].w2=Fuzzydata[class3[i-50]][j].w2;
			Train[i][j].a=Fuzzydata[class3[i-50]][j].a;
			Train[i][j].b=Fuzzydata[class3[i-50]][j].b;
		}
		Train_out[i]=output[class3[i-50]];
	}

    

	//生成測試樣本集
	int temp[150+1];
	for(i=1;i<=150;i++)
		temp[i]=i;
	for(i=1;i<=25;i++)
	{
		temp[class1[i]]=0;
		temp[class2[i]]=0;
		temp[class3[i]]=0;
	}
	int stest[75+1];
	k=1;
	for(i=1;i<=150;i++)
		if(temp[i]!=0)
		{
			stest[k]=temp[i];
			k++;
		}
	
	FuzzyNum **Test;
	int *Test_out;
	Test=new FuzzyNum *[TestNum+1];
	mcheck(Test);
	for(i=1;i<=TestNum;i++)
	{
		Test[i]=new FuzzyNum[L+1];
		mcheck(Test[i]);
	}
	Test_out=new int[TestNum+1];
	mcheck(Test_out);
	for(i=1;i<=75;i++)
	{
		for(j=1;j<=L;j++)
		{
			Test[i][j].w1=Fuzzydata[stest[i]][j].w1;
			Test[i][j].w2=Fuzzydata[stest[i]][j].w2;
			Test[i][j].a=Fuzzydata[stest[i]][j].a;
			Test[i][j].b=Fuzzydata[stest[i]][j].b;
		}
		Test_out[i]=output[stest[i]];
	}
	

	//~生成heart_scale數據的訓練和測試樣本集合
	int class1[60+1];
	int class2[75+1];
	
	myrand(60,class1,1,120);
	myrand(75,class2,121,270);
		 
	for(i=1;i<=60;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class1[i]][j].w1;
            Train[i][j].w2=Fuzzydata[class1[i]][j].w2;
			Train[i][j].a=Fuzzydata[class1[i]][j].a;
			Train[i][j].b=Fuzzydata[class1[i]][j].b;
		}
		Train_out[i]=output[class1[i]];
	}
    for(i=61;i<=135;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class2[i-60]][j].w1;
            Train[i][j].w2=Fuzzydata[class2[i-60]][j].w2;
			Train[i][j].a=Fuzzydata[class2[i-60]][j].a;
			Train[i][j].b=Fuzzydata[class2[i-60]][j].b;
		}
		Train_out[i]=output[class2[i-60]];
	}
	
	//生成測試樣本集
	int temp[270+1];
	for(i=1;i<=270;i++)
		temp[i]=i;
	for(i=1;i<=60;i++)
	{
		temp[class1[i]]=0;
	}
	for(i=1;i<=75;i++)
	{
		temp[class2[i]]=0;
	}

	int stest[135+1];
	k=1;
	for(i=1;i<=270;i++)
		if(temp[i]!=0)
		{
			stest[k]=temp[i];
			k++;
		}
	
	FuzzyNum **Test;
	int *Test_out;
	Test=new FuzzyNum *[TestNum+1];
	mcheck(Test);
	for(i=1;i<=TestNum;i++)
	{
		Test[i]=new FuzzyNum[L+1];
		mcheck(Test[i]);
	}
	Test_out=new int[TestNum+1];
	mcheck(Test_out);
	for(i=1;i<=135;i++)
	{
		for(j=1;j<=L;j++)
		{
			Test[i][j].w1=Fuzzydata[stest[i]][j].w1;
			Test[i][j].w2=Fuzzydata[stest[i]][j].w2;
			Test[i][j].a=Fuzzydata[stest[i]][j].a;
			Test[i][j].b=Fuzzydata[stest[i]][j].b;
		}
		Test_out[i]=output[stest[i]];
	}
*/
	int class1[35+1];
	int class2[49+1];
	int class3[44+1];
	int class4[26+1];

	myrand(35,class1,1,71);
	myrand(49,class2,72,169);
	myrand(44,class3,170,258);
	myrand(26,class4,259,310);
    
	 
	for(i=1;i<=35;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class1[i]][j].w1;
            Train[i][j].w2=Fuzzydata[class1[i]][j].w2;
			Train[i][j].a=Fuzzydata[class1[i]][j].a;
			Train[i][j].b=Fuzzydata[class1[i]][j].b;
		}
		Train_out[i]=output[class1[i]];
	}
    for(i=36;i<=84;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class2[i-35]][j].w1;
            Train[i][j].w2=Fuzzydata[class2[i-35]][j].w2;
			Train[i][j].a=Fuzzydata[class2[i-35]][j].a;
			Train[i][j].b=Fuzzydata[class2[i-35]][j].b;
		}
		Train_out[i]=output[class2[i-35]];
	}
	for(i=85;i<=128;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class3[i-84]][j].w1;
            Train[i][j].w2=Fuzzydata[class3[i-84]][j].w2;
			Train[i][j].a=Fuzzydata[class3[i-84]][j].a;
			Train[i][j].b=Fuzzydata[class3[i-84]][j].b;
		}
		Train_out[i]=output[class3[i-84]];
	}
	for(i=129;i<=154;i++)
	{
		for(j=1;j<=L;j++)
		{
			Train[i][j].w1=Fuzzydata[class4[i-128]][j].w1;
            Train[i][j].w2=Fuzzydata[class4[i-128]][j].w2;
			Train[i][j].a=Fuzzydata[class4[i-128]][j].a;
			Train[i][j].b=Fuzzydata[class4[i-128]][j].b;
		}
		Train_out[i]=output[class4[i-128]];
	}

    

	//生成測試樣本集
	int temp[310+1];
	for(i=1;i<=310;i++)
		temp[i]=i;
	for(i=1;i<=35;i++)
	{
		temp[class1[i]]=0;
	}
    for(i=1;i<=49;i++)
	{
		temp[class2[i]]=0;
	}
	for(i=1;i<=44;i++)
	{
		temp[class3[i]]=0;
	}
	for(i=1;i<=26;i++)
	{
		temp[class4[i]]=0;
	}
	int stest[156+1];
	k=1;
	for(i=1;i<=310;i++)
		if(temp[i]!=0)
		{
			stest[k]=temp[i];
			k++;
		}
	
	FuzzyNum **Test;
	int *Test_out;
	Test=new FuzzyNum *[TestNum+1];
	mcheck(Test);
	for(i=1;i<=TestNum;i++)
	{
		Test[i]=new FuzzyNum[L+1];
		mcheck(Test[i]);
	}
	Test_out=new int[TestNum+1];
	mcheck(Test_out);
	for(i=1;i<=156;i++)
	{
		for(j=1;j<=L;j++)
		{
			Test[i][j].w1=Fuzzydata[stest[i]][j].w1;
			Test[i][j].w2=Fuzzydata[stest[i]][j].w2;
			Test[i][j].a=Fuzzydata[stest[i]][j].a;
			Test[i][j].b=Fuzzydata[stest[i]][j].b;
		}
		Test_out[i]=output[stest[i]];
	}
	


	//對prototype部分進行訓練
	//WeightOut(prototype,N,L);
	pecfuh(prototype,N,TrainNum,L,Train,Train_out);
	//mpecfuh(prototype,N,TrainNum,L,Train,Train_out);
	//WeightOut(prototype,N,L);
	//mlvq(prototype,N,TrainNum,L,Train);
	//plvq(prototype,N,TrainNum,L,Train);


	//對exemplar部分進行訓練
	cout<<"==================================="<<endl;
	cout<<"開始準備對exemplar部分進行訓練."<<endl;
	
	int *order;
	order=new int[TrainNum+1];
	mcheck(order);
		
	int c;
	int M=0; //表示exemplar部分的結點個數
	
	int errornum=1;

    while(errornum!=0)
	{
		errornum=0;
	    myrand(TrainNum,order);
     	for(i=1;i<=TrainNum;i++)
		{
	    	c=feedforward(prototype,N,exemplar,M,Train[order[i]],L);
	    	if(c!=Train_out[order[i]])
			{
		    	errornum++;
		    	M=fence(prototype,N,&exemplar,M,Train[order[i]],L,Train_out[order[i]]);
			}
		}
	}

	cout<<"exemplar部分的訓練已經完成."<<endl;
    cout<<"==================================="<<endl;

  //用測試樣本進行測試
	cout<<"==================================="<<endl;
	cout<<"開始對神經網絡進行測試"<<endl;
	int count=0;
	int count1=0;
	int count2=0;
	int count3=0;
	int count4=0;
	for(i=1;i<=TestNum;i++)
	{
		c=feedforward(prototype,N,exemplar,M,Test[i],L);
		if(c!=Test_out[i])
		{
			if(Test_out[i]==1)count1++;
			if(Test_out[i]==2)count2++;
			if(Test_out[i]==3)count3++;
			if(Test_out[i]==4)count4++;
		}
	}
	cout<<"對神經網絡測試完畢."<<endl;
    cout<<"==================================="<<endl;
	count=count1+count2+count3+count4;
	cout<<"總的測試準確率為:"<<1-(double)count/TestNum<<endl;
	cout<<"第一類測試準確率為:"<<1-(double)count1/35<<endl;
	cout<<"第二類測試準確率為:"<<1-(double)count2/49<<endl;
	cout<<"第三類測試準確率為:"<<1-(double)count3/44<<endl;
    cout<<"第三類測試準確率為:"<<1-(double)count4/26<<endl;
	cout<<"生成的exemplar結點的個數為:"<<M<<endl;
    cout<<"==================================="<<endl;
	//回收分配的空間
	for(j=1;j<=N;j++)
	{
		delete [](prototype[j].w);
		delete [](prototype[j].g);
	}
	delete []prototype;

	for(i=1;i<=DataNum;i++)
		delete [](data[i]);
	delete []data;

	delete []max;
	delete []min;

	for(i=1;i<=DataNum;i++)
		delete [](Fuzzydata[i]);
	delete []Fuzzydata;

	delete output;

	for(i=1;i<=TrainNum;i++)
		delete [](Train[i]);
	delete []Train;
	delete []Train_out;

	for(i=1;i<=TestNum;i++)
		delete [](Test[i]);
	delete []Test;
	delete []Test_out;

	delete []order;

    
	ExemNode *p,*q;
	p=exemplar;
	q=exemplar->next;
	while(p!=NULL)
	{
		delete p;
		p=q;
		if(q!=NULL)q=q->next;
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级免费大片| 在线免费亚洲电影| 2014亚洲片线观看视频免费| 免费看日韩a级影片| 日韩视频在线你懂得| 美女性感视频久久| 久久免费电影网| aaa欧美日韩| 亚洲综合在线视频| 91精品国产丝袜白色高跟鞋| 国产综合久久久久久鬼色| 久久久久成人黄色影片| 成人综合在线观看| 亚洲精品高清在线观看| 制服丝袜亚洲精品中文字幕| 狠狠狠色丁香婷婷综合久久五月| 国产偷国产偷精品高清尤物| 99精品欧美一区二区蜜桃免费| 亚洲精品成人a在线观看| 欧美老肥妇做.爰bbww视频| 国内久久婷婷综合| 一区二区三区日韩欧美精品| 日韩欧美在线一区二区三区| 成人国产精品免费网站| 午夜亚洲国产au精品一区二区| 精品国产一区二区亚洲人成毛片 | 亚洲一区二区三区中文字幕在线| 欧美视频在线观看一区| 国产呦萝稀缺另类资源| 亚洲乱码国产乱码精品精小说 | 国产iv一区二区三区| 亚洲精品中文在线| 精品久久久久久久人人人人传媒| 成年人午夜久久久| 日本va欧美va瓶| 国产精品久久久久久久久果冻传媒 | 99r国产精品| 麻豆久久久久久| 亚洲毛片av在线| 久久久久青草大香线综合精品| 欧美视频一区二区| 成人美女在线观看| 欧美aaaaa成人免费观看视频| 亚洲日本va在线观看| www欧美成人18+| 91超碰这里只有精品国产| 91在线视频播放| 国产成人亚洲综合色影视| 国产剧情一区二区| 亚洲综合一区二区三区| 国产精品污www在线观看| 日韩免费观看高清完整版 | 日本网站在线观看一区二区三区| 国产精品乱码久久久久久| 精品国偷自产国产一区| 51精品视频一区二区三区| 色屁屁一区二区| 99re亚洲国产精品| 国产成人综合在线观看| 国产一区免费电影| 视频在线在亚洲| 亚洲国产精品自拍| 亚洲一区二区三区视频在线播放| 亚洲欧美福利一区二区| 国产日韩一级二级三级| 久久影院视频免费| 欧美mv日韩mv国产| 日韩精品专区在线影院重磅| 欧美精品自拍偷拍| 欧美精品乱码久久久久久 | 久久99日本精品| 男女激情视频一区| 美女视频黄a大片欧美| 日韩成人免费电影| 蜜桃视频免费观看一区| 日韩经典一区二区| 免费观看一级欧美片| 麻豆精品在线播放| 久久99国产精品久久99| 乱中年女人伦av一区二区| 免费在线观看精品| 国产麻豆视频一区| 成人影视亚洲图片在线| 成人午夜碰碰视频| 91欧美一区二区| 在线观看一区二区精品视频| 欧美日韩一区二区三区四区五区| 欧美日韩午夜在线视频| 91精品福利在线一区二区三区| 这里只有精品免费| 日韩欧美亚洲另类制服综合在线| 精品国产成人在线影院| 国产午夜精品在线观看| 亚洲三级在线免费观看| 午夜欧美大尺度福利影院在线看| 日一区二区三区| 国产美女主播视频一区| 高清成人免费视频| 色哟哟国产精品免费观看| 欧美怡红院视频| 欧美成人三级在线| 国产精品天干天干在观线| 亚洲一区二区三区国产| 美女免费视频一区| av午夜一区麻豆| 69堂亚洲精品首页| 国产欧美一区二区精品忘忧草| 亚洲品质自拍视频网站| 蜜臀久久久久久久| 成人自拍视频在线观看| 精品99一区二区三区| 国产精品家庭影院| 视频一区在线播放| 国产a级毛片一区| 欧美视频精品在线| 国产日产亚洲精品系列| 亚洲一区二区三区美女| 国产专区综合网| 欧美亚洲一区二区三区四区| 精品成人一区二区三区四区| 亚洲美女淫视频| 国产一区91精品张津瑜| 欧美午夜寂寞影院| 国产日韩欧美激情| 日日摸夜夜添夜夜添亚洲女人| 大白屁股一区二区视频| 日韩亚洲欧美中文三级| 亚洲私人黄色宅男| 久久99国产精品久久99| 欧美亚洲日本一区| 国产日韩欧美一区二区三区乱码 | 欧美性大战久久久久久久蜜臀 | 亚洲影视在线播放| 国产不卡视频一区| 日韩一区二区中文字幕| 亚洲丝袜制服诱惑| 国产99精品视频| 欧美v日韩v国产v| 亚洲综合久久av| 成人18精品视频| 久久久久久久久久久久电影| 青青青爽久久午夜综合久久午夜| 91亚洲男人天堂| 国产精品女同互慰在线看| 强制捆绑调教一区二区| 欧美专区在线观看一区| 中文字幕一区二区三区视频| 国产麻豆精品久久一二三| 日韩精品中文字幕一区二区三区 | 日本v片在线高清不卡在线观看| 91高清在线观看| 亚洲人成人一区二区在线观看| 国产成人在线色| 久久美女艺术照精彩视频福利播放| 偷拍与自拍一区| 欧美网站大全在线观看| 一区二区三区精品| 91成人网在线| 亚洲精品成人少妇| 色综合天天综合狠狠| 中文字幕日韩av资源站| 91影院在线观看| 亚洲欧洲国产日韩| 99久久99精品久久久久久 | 亚洲主播在线观看| 一本大道综合伊人精品热热| 成人欧美一区二区三区小说| 成人免费不卡视频| 亚洲视频一区二区在线| 97超碰欧美中文字幕| 亚洲毛片av在线| 欧美综合一区二区| 亚洲一区视频在线观看视频| 欧美系列一区二区| 性做久久久久久久免费看| 91精品啪在线观看国产60岁| 久久精品国产77777蜜臀| 久久久精品2019中文字幕之3| 国模娜娜一区二区三区| 亚洲国产成人tv| 在线综合+亚洲+欧美中文字幕| 日韩影院在线观看| 精品国产免费一区二区三区四区| 国产风韵犹存在线视精品| 综合久久综合久久| 欧美日韩在线播放| 国模冰冰炮一区二区| 国产精品毛片高清在线完整版| 色中色一区二区| 日本美女一区二区三区| 国产区在线观看成人精品 | 中文字幕av一区二区三区高 | 在线精品视频小说1| 日本不卡高清视频| 国产精品天天看| 欧美日韩视频第一区| 国产一区二区三区综合| 综合在线观看色| 日韩视频免费观看高清完整版 | 一区二区三区在线免费观看|