#include
#include
#include
#include
using
namespace
std;
const
int maxn=1000;
const
double pi=3.1415926;
ifstream cin1("female.txt");
ifstream cin2("male.txt");
ifstream cin3("test2.txt");
ofstream cout1("result.txt");
struct human
;human female[maxn];
human male[maxn];
int female_num;
int male_num;
double p_female;
double p_male;
struct normal
;normal female_normal;
normal male_normal;
/*讀入檔案資料
*/void in()
while(cin2>>male[male_num+1].height>>male[male_num+1].weight)
}void init()
/*讀入樣本數量個樣本,並求出該樣本的二維正態分佈
*/void normalization(struct human *human,int human_num,struct normal &human_normal)
mu1/=human_num;
mu2/=human_num;
for(int i=1;i<=human_num;i++)
delta1/=human_num;
delta2/=human_num;
delta1=sqrt(delta1);
delta2=sqrt(delta2);
for(int i=1;i<=human_num;i++)
rho/=human_num;
rho-=mu1*mu2;
rho/=(delta1*delta2);
human_normal.mu1=mu1;
human_normal.mu2=mu2;
human_normal.delta1=delta1;
human_normal.delta2=delta2;
human_normal.rho=rho;
cout
<" "
<" "
<" "
<" "
在分布為normal的條件下特徵為(x1,x2)的條件概率
*/double p(struct normal &normal,double x1,double x2)
/*歸為normal的後驗概率
t為0表示female,1表示male
*/double posterior_probability1(double x1,double x2,bool t)
/*判斷是哪個類別,返回0表示female,1表示male
*/bool classify(double x1,double x2)
/*得到錯誤率並將錯誤率輸出到result.txt中
*/void find_error_rate()
模式識別 貝葉斯分類器的訓練
貝葉斯分類決策規則 依據計算得到的後驗概率對樣本進行歸類 條件 先驗概率和類條件概率已知。因此只要知道 p w j p w j p wj 和p x wj p x w j p x wj 就可以設計出貝葉斯分類器,而p w j p w j p wj 和p x wj p x w j p x wj 並不能預...
模式識別分類
摘自 模式識別導論 齊敏,李大健,郝重陽,清華大學出版社,2009.按照理論分類 統計模式識別 是定量描述的識別方法。以模式集在特徵空間中分布的類概率密度函式為基礎,對總體特徵進行研究,包括判別函式法和聚類分析法。是模式分類的經典型和基礎性技術,歷史最長,目前仍是模式識別的主要理論。句法模式識別 也...
模式識別(三)非線性分類器
遇到像圖1中所示的樣本分類,線性方法是無法發揮作用的。因為塔是線性不可分的,這時候必須採用非線性方法。多層感知器包含乙個以上隱層和乙個輸出層,隱層將輸入對映到乙個超立方體頂點,輸出層完成線性分類。通過隱層不斷對映,最終可以將樣本對映為線性可分。隱層中每個神經元相當於乙個超平面,超平面將樣本點對映到超...