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

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

?? classification.cpp

?? 包括Bayes分類器、線性分類器、非線性分類器、神經網絡分類器等
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Classification.cpp: implementation of the Classification class.
// 2005.1.13-16:02 By Superman 
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "DSPLIT.h"
#include "Classification.h"
#include "matrix.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Classification::Classification()
{

}

Classification::~Classification()
{

}



/******************************************************************
*   函數名稱:LeastDistance()
*   函數類型:number_no,結構體
*   函數功能:最小距離法 ,返回數字類別和編號
******************************************************************/
number_no Classification::LeastDistance()
{
	double min=10000000000;
	number_no number_no;
	for(int n=0;n<10;n++)
	{
		for(int i=0;i<pattern[n].number;i++)
		{
			if(pipei(pattern[n].feature[i],testsample)<min)
			{
				//匹配的最小值
				min=pipei(pattern[n].feature[i],testsample);
				number_no.number=n;//樣品類別
				number_no.no=i;//樣品序號
			}
		}
	}
	return number_no;//返回手寫數字的類別和序號
}

/******************************************************************
*   函數名稱:Fisher_2Classes(int Class0, int Class1)
*   函數類型:int 
*   參數說明:Class0,Class1:0~9中的任意兩個類別
*   函數功能:兩類Fisher分類器,返回Class0,Class1中的一個
******************************************************************/
int Classification::Fisher_2Classes(int Class0, int Class1)
{
	double Xmeans[2][25];//兩類的均值
	double S[2][25][25];//樣品類內離散度矩陣
	double Sw[25][25];//總類間離散度矩陣
	double Sw_[25][25];//Sw的逆矩陣
	double W[25];//解向量w*
	double difXmeans[25];//均值差
	double X[25];//未知樣品
	double m0,m1;//類樣品均值
	double y0;//閾值y0
	int i,j,k;

	for(i=0;i<2;i++)
		for(j=0;j<25;j++)
			Xmeans[i][j]=0;
	int num0,num1;		//兩類樣品的個數
	//兩類樣品特征
	double mode0[200][25],mode1[200][25];
	//兩類樣品個數
	num0=40;//pattern[Class0].number;
	num1=40;//pattern[Class1].number;
	for(i=0;i<num0;i++)
	{
		for(j=0;j<25;j++)
		{
			Xmeans[0][j]+=pattern[Class0].feature[i][j];
			mode0[i][j]=pattern[Class0].feature[i][j];
		}
	}

	for(i=0;i<num1;i++)
	{
		for(j=0;j<25;j++)
		{
			Xmeans[1][j]+=pattern[Class1].feature[i][j];	
			mode1[i][j]=pattern[Class1].feature[i][j];
		}
	}
	//求得兩個樣品均值向量
	for(i=0;i<25;i++)	
	{
		Xmeans[0][i]/=(double)num0;
		Xmeans[1][i]/=(double)num1;
	}
	//求兩類樣品類內離散度矩陣
	for(i=0;i<25;i++)
	for(j=0;j<25;j++)
	{
		double s0=0.0,s1=0.0;
		for(k=0;k<num0;k++)
			s0=s0+(mode0[k][i]-Xmeans[0][i])*(mode0[k][j]-Xmeans[0][j]);
		s0=s0/(double)(num0-1);
		S[0][i][j]=s0;//第一類
		for(k=0;k<num1;k++)
			s1=s1+(mode1[k][i]-Xmeans[1][i])*(mode1[k][j]-Xmeans[1][j]);
		s1=s1/(double)(num1-1);
		S[1][i][j]=s1;//第二類		
	}
	//總類間離散度矩陣
	for(i=0;i<25;i++)
	for(j=0;j<25;j++)
	{
		Sw[i][j]=S[0][i][j]+S[1][i][j];
	}
	//Sw的逆矩陣
	for(i=0;i<25;i++)
		for(j=0;j<25;j++)
			Sw_[i][j]=Sw[i][j];	
	double(*p)[25]=Sw_;	
	brinv(*p,25);		//Sw的逆矩陣Sw_
	//計算w*  w*=Sw_×(Xmeans0-Xmeans1)
	for(i=0;i<25;i++)
		difXmeans[i]=Xmeans[0][i]-Xmeans[1][i];
	for(i=0;i<25;i++)
		W[i]=0.0;
	brmul(Sw_,difXmeans,25,W);//計算出W*
	
	//各類樣品均值
	m0=0.0;
	m1=0.0;
	for(i=0;i<num0;i++)
	{
		m0+=brmul(W,mode0[i],25);
	}
	for(i=0;i<num1;i++)
	{
		m1+=brmul(W,mode1[i],25);
	}
	m0/=(double)num0;
	m1/=(double)num1;
	y0=(num0*m0+num1*m1)/(num0+num1);//閾值y0
	
	//對于任意的手寫數字X
	for(i=0;i<25;i++)
		X[i]=testsample[i];
	double y;//X在w*上的投影點
	y=brmul(W,X,25);
	if (y>=y0) 
		return Class0;
	else
		return Class1;
}

/******************************************************************
*   函數名稱:Fisher()
*   函數類型:int 
*   函數功能:Fisher分類器,返回手寫數字的類別
******************************************************************/
int Classification::Fisher()
{
	int i,j,number,maxval,num[10];
	for(i=0;i<10;i++)
		num[i]=0;
	for(i=0;i<10;i++)
		for(j=0;j<i;j++)
			num[Fisher_2Classes(i,j)]++;
	maxval=num[0];
	number=0;
	for(i=1;i<10;i++)
	{
		if(num[i]>maxval)
		{
			maxval=num[i];
			number=i;
		}
	}
	return number;
}

/******************************************************************
*   函數名稱:BayesErzhishuju()
*   函數類型:int 
*   函數功能:基于二值數據的Bayes分類器 ,返回手寫數字的類別
******************************************************************/
int Classification::BayesErzhishuju()
{
	double Pw[10];//先驗概率P(wj)=Nj/N
	double P[10][25];//Pj(wi)wi:wi類,j:第j個特征
	double PXw[10];//類條件概率P(X|wj)
	double PwX[10];//后驗概率P(wj|X)

	int i,j;

	//求先驗概率
	int n[10];//各類樣品數
	int N=0;//樣品總數
	for(i=0;i<10;i++)
	{
		//各數字類別樣品數
		n[i]=pattern[i].number;
		N+=n[i];//樣品總數
	}
	for(i=0;i<10;i++)
		Pw[i]=(double)n[i]/(double)N;//先驗概率
	
	//求類條件概率
	for(i=0;i<10;i++)
	{
		for(j=0;j<25;j++)
		{
			int numof1=0;//二值數據中1的個數
			for(int k=0;k<pattern[i].number;k++)
				numof1+=pattern[i].feature[k][j]>0.1?1:0;
			P[i][j]=(double)(numof1+1)/(double)(n[i]+2);
		}
	}

	for(i=0;i<10;i++)
	{
		double p=1;
		for(int j=0;j<25;j++)
		{
			p*=(testsample[j]>0.1)?P[i][j]:1-P[i][j];
		}
		PXw[i]=p;
	}

	//求后驗概率
	double PX=0.0,maxP=0.0;
	int number;
	for(i=0;i<10;i++)
	{
		PX+=Pw[i]*PXw[i];
	}

	for(i=0;i<10;i++)
	{
		PwX[i]=Pw[i]*PXw[i]/PX;
		if(PwX[i]>maxP)
		{
			maxP=PwX[i];
			number=i;
		}
	}
	return number;
}

/******************************************************************
*   函數名稱:BayesLeasterror()
*   函數類型:int 
*   函數功能:最小錯誤概率的Bayes分類器 ,返回手寫數字的類別
******************************************************************/
int Classification::BayesLeasterror()
{
	double X[25];//待測樣品
	double Xmeans[25];//樣品的均值
	double S[25][25];//協方差矩陣
	double S_[25][25];//S的逆矩陣
	double Pw;//先驗概率
	double hx[10];//判別函數
	
	int i,j,k,n;
	
	for(n=0;n<10;n++)//循環類別0~9
	{
		int num=pattern[n].number;//樣品個數
		//求樣品平均值
		for(i=0;i<25;i++)
			Xmeans[i]=0.0;
		for(k=0;k<num;k++)
		{
			for(i=0;i<25;i++)
				Xmeans[i]+=pattern[n].feature[k][i]>0.10?1.0:0.0;
		}
		for(i=0;i<25;i++)
			Xmeans[i]/=(double)num;
		//求協方差矩陣
		double mode[200][25];
		for(i=0;i<num;i++)
			for(j=0;j<25;j++)
				mode[i][j]=pattern[n].feature[i][j]>0.10?1.0:0.0;
		for(i=0;i<25;i++)
		for(j=0;j<25;j++)
		{
			double s=0.0;
			for(k=0;k<num;k++)
				s=s+(mode[k][i]-Xmeans[i])*(mode[k][j]-Xmeans[j]);
			s=s/(double)(num-1);
			S[i][j]=s;
		}
		//求先驗概率
		int total=0;
		for(i=0;i<10;i++)
			total+=pattern[i].number;
		Pw=(double)num/(double)total;
		//求S的逆矩陣
		for(i=0;i<25;i++)
			for(j=0;j<25;j++)
				S_[i][j]=S[i][j];

		double(*p)[25]=S_;

		brinv(*p,25);//S的逆矩陣
		//求S的行列式
		double (*pp)[25]=S;
		double DetS;
		DetS=bsdet(*pp,25);//S的行列式
		//求判別函數
		for(i=0;i<25;i++)
			X[i]=testsample[i]>0.10?1.0:0.0;
		for(i=0;i<25;i++)
			X[i]-=Xmeans[i];
		double t[25];
		for(i=0;i<25;i++)
			t[i]=0;
		brmul(X,S_,25,t);
		double t1=brmul(t,X,25);
		double t2=log(Pw);
		double t3=log(DetS+1);
		hx[n]=-t1/2+t2-t3/2;
	}

	double maxval=hx[0];
	int number=0;
	//判別函數的最大值
	for(n=1;n<10;n++)
	{
		if(hx[n]>maxval)
		{
			maxval=hx[n];
			number=n;
		}
	}
	return number;
}

/******************************************************************
*   函數名稱:BayesLeastRisk(double loss[10][10])
*   函數類型:double*
*   參數說明:double loss[10][10]:損失
*   函數功能:最小風險的Bayes分類器 ,返回各類的風險值
******************************************************************/
double* Classification::BayesLeastRisk(double loss[10][10])
{
	double X[25];//待測樣品
	double Xmeans[25];//樣品的均值
	double S[25][25];//協方差矩陣S
	double S_[25][25];//S的逆矩陣
	double P[10];//后驗概率
	double Pw;//先驗概率
	double hx[10];//判別函數
	
	int i,j,k,n;
	
	for(n=0;n<10;n++)//
	{
		int num=pattern[n].number;//樣品個數
		//求樣品均值
		for(i=0;i<25;i++)
			Xmeans[i]=0.0;
		for(k=0;k<num;k++)
		{
			for(i=0;i<25;i++)
				Xmeans[i]+=pattern[n].feature[k][i]>0.2?1.0:0.0;
		}
		for(i=0;i<25;i++)
			Xmeans[i]/=(double)num;
		//求協方差矩陣
		double mode[200][25];
		for(i=0;i<num;i++)
			for(j=0;j<25;j++)
				mode[i][j]=pattern[n].feature[i][j]>0.2?1.0:0.0;
		for(i=0;i<25;i++)
		for(j=0;j<25;j++)
		{
			double s=0.0;
			for(k=0;k<num;k++)
				s=s+(mode[k][i]-Xmeans[i])*(mode[k][j]-Xmeans[j]);
			s=s/(double)(num-1);
			S[i][j]=s;
		}
		//求先驗概率
		int total=0;//樣品總數
		for(i=0;i<10;i++)
			total+=pattern[i].number;
		Pw=(double)num/(double)total;
		//求S的逆矩陣
		for(i=0;i<25;i++)
			for(j=0;j<25;j++)
				S_[i][j]=S[i][j];

		double(*p)[25]=S_;

		brinv(*p,25);//S的逆矩陣
		//求S的行列式
		double (*pp)[25]=S;
		double DetS;
		DetS=bsdet(*pp,25);//S的行列式
		//求判別函數
		for(i=0;i<25;i++)
			X[i]=testsample[i]>0.2?1.0:0.0;
		for(i=0;i<25;i++)
			X[i]-=Xmeans[i];
		double t[25];
		for(i=0;i<25;i++)
			t[i]=0;
		brmul(X,S_,25,t);
		double t1=brmul(t,X,25);
		double t2=log(Pw);
		double t3=log(DetS+1);
		P[n]=-t1/2+t2-t3/2;
	}
	
	for(n=0;n<10;n++)
	{
		double t=0.0;
		for(i=0;i<10;i++)
			t+=loss[n][i]*P[i];
		hx[n]=t;
	}
	
	return (double*)hx;
}

/******************************************************************
*   函數名稱:Jiangcheng()
*   函數類型:int 
*   函數功能:獎懲算法 ,返回手寫數字的類別
******************************************************************/
int Classification::Jiangcheng()
{
	double w[10][26];//權值
	double d[10];//迭代計算結果權矢量
	double x[26];//增1樣品
	double hx[10];//判別函數
	bool flag;
	int n,i,j,k;
	int c=0;//迭代次數

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩码欧中文字| 欧美无砖专区一中文字| 久久综合九色综合97婷婷| 蜜臀av一区二区| 日韩一区二区三| 麻豆精品在线播放| 久久美女高清视频| 福利一区二区在线观看| 中文字幕亚洲区| 欧美私人免费视频| 亚洲va韩国va欧美va| 欧美三级蜜桃2在线观看| 天天色天天爱天天射综合| 日韩午夜小视频| 国产精品1区2区| 亚洲激情校园春色| 这里只有精品电影| 国产精品2024| 亚洲一区二区3| 欧美电视剧在线观看完整版| 国产激情一区二区三区| 亚洲人xxxx| 日韩三级视频中文字幕| 成人听书哪个软件好| 亚洲国产日韩一级| 久久一日本道色综合| 91视频在线看| 久久精品国产网站| 亚洲欧美在线另类| 日韩视频免费观看高清完整版| 国产精品一区在线| 亚洲高清在线视频| 久久久久久亚洲综合影院红桃| 91社区在线播放| 久久99日本精品| 亚洲精品你懂的| 久久免费国产精品| 欧美日韩亚洲丝袜制服| 岛国av在线一区| 日本视频一区二区三区| 综合久久国产九一剧情麻豆| 日韩午夜激情视频| 在线欧美一区二区| 成人精品一区二区三区中文字幕| 亚洲成人7777| 国产精品不卡视频| wwwwww.欧美系列| 欧美三级日韩在线| 99九九99九九九视频精品| 久久99久久久久久久久久久| 一区二区三区四区在线免费观看| 26uuu亚洲婷婷狠狠天堂| 欧美亚洲禁片免费| av资源网一区| 国产盗摄一区二区三区| 麻豆国产精品官网| 亚洲专区一二三| 亚洲视频一区二区在线观看| 久久综合久色欧美综合狠狠| 欧美色成人综合| 久久亚洲精华国产精华液| 欧美三级日韩三级国产三级| 99在线热播精品免费| 国产精品一级黄| 蜜臀av性久久久久蜜臀aⅴ| 亚洲va欧美va国产va天堂影院| 日韩理论片在线| 国产精品福利av| 中文字幕欧美日本乱码一线二线 | 激情文学综合插| 五月天一区二区三区| 亚洲一二三四区| 一区二区视频免费在线观看| 国产精品色哟哟网站| 亚洲国产精品国自产拍av| 久久夜色精品一区| 久久一区二区三区四区| 精品国产乱码久久久久久闺蜜| 91精品国产入口| 日韩一区二区三区免费看| 911精品产国品一二三产区| 欧美日韩一区在线观看| 欧美精品1区2区| 9191国产精品| 日韩欧美你懂的| 精品欧美一区二区在线观看 | 精品少妇一区二区| 日韩一区二区在线播放| 日韩欧美电影一区| 精品久久久久99| 久久久91精品国产一区二区精品| 精品国产伦理网| 国产日韩欧美a| 国产精品午夜在线| 亚洲欧美日韩综合aⅴ视频| 亚洲日本青草视频在线怡红院| 亚洲色图视频网站| 亚洲线精品一区二区三区| 亚洲v精品v日韩v欧美v专区| 午夜亚洲国产au精品一区二区| 亚洲电影激情视频网站| 日韩一区欧美二区| 九色|91porny| 成人免费视频app| 91精品福利在线| 777午夜精品免费视频| 精品国产91洋老外米糕| 国产精品午夜在线| 亚洲一区二区三区爽爽爽爽爽| 天天操天天干天天综合网| 久久99九九99精品| 不卡一区在线观看| 欧美视频中文一区二区三区在线观看| 欧美精品乱码久久久久久按摩| 久久综合久久99| 亚洲另类在线一区| 麻豆91精品视频| 91亚洲精品一区二区乱码| 欧美肥妇free| 国产精品乱码人人做人人爱| 亚洲第一会所有码转帖| 国产专区欧美精品| 在线免费不卡视频| 26uuu成人网一区二区三区| 亚洲三级视频在线观看| 美女网站视频久久| 91在线无精精品入口| 精品日韩在线一区| 亚洲最新在线观看| 福利视频网站一区二区三区| 欧美放荡的少妇| 国产精品黄色在线观看| 免费人成黄页网站在线一区二区| 成人手机电影网| 日韩欧美电影一区| 亚洲综合在线第一页| 大胆欧美人体老妇| 日韩欧美国产小视频| 美女视频网站黄色亚洲| 欧美视频精品在线观看| 日本一区二区视频在线观看| 日韩av一二三| 99久久精品一区| 国产成人av在线影院| 在线播放一区二区三区| 日韩理论片中文av| 国产中文一区二区三区| 在线成人免费观看| 亚洲天天做日日做天天谢日日欢 | 91女厕偷拍女厕偷拍高清| 久久久影视传媒| 天堂精品中文字幕在线| 一本久久综合亚洲鲁鲁五月天 | 日本欧美一区二区三区| 在线观看av一区二区| 亚洲欧美综合网| 国产不卡在线一区| 久久久久久久久久久黄色| 裸体歌舞表演一区二区| 欧美经典一区二区| 欧美大片顶级少妇| 亚洲五码中文字幕| 91久久奴性调教| 亚洲色图欧美激情| 99视频国产精品| 自拍偷自拍亚洲精品播放| 国产91精品免费| 国产免费观看久久| 国产精品亚洲视频| 久久精品在线免费观看| 激情欧美日韩一区二区| 精品三级在线看| 激情另类小说区图片区视频区| 日韩一区二区高清| 久久av资源站| 久久久亚洲精品石原莉奈| 寂寞少妇一区二区三区| 2014亚洲片线观看视频免费| 国产综合成人久久大片91| 久久免费精品国产久精品久久久久| 国产一区二区三区视频在线播放| 精品日韩成人av| 成人永久aaa| 亚洲乱码国产乱码精品精98午夜| 91丨porny丨国产入口| 一卡二卡三卡日韩欧美| 欧美日韩国产片| 蜜臀久久久久久久| 精品国产欧美一区二区| 国产成人午夜高潮毛片| 亚洲黄色片在线观看| 亚洲一区二区三区精品在线| 久久久久久亚洲综合影院红桃| 国产一区二区三区免费观看| 国产日韩精品久久久| 91丨九色丨黑人外教| 香蕉av福利精品导航| 欧美哺乳videos| a美女胸又www黄视频久久| 亚洲小说春色综合另类电影|