資源簡介
以狼來了為例,使用貝葉斯分類器對小孩三次說謊后的可信度的一個計算,并介紹了二分類問題的matlab實現

代碼片段和文件信息
?function?[?PpSs]?=?CASE(constant)
%CASE3函數表示在協方差矩陣是非對角陣鱸魚和三文魚的協方差矩陣相同條件下,生成的貝葉斯分類器的結果
%輸入參數:mul_perch——鱸魚的均值
%?????????sigma_perch——鱸魚的方差
%?????????mul_salmon——三文魚的均值
%?????????sigma_salmon——三文魚的方差
%輸出參數:Pp作為一個結構體,表示當perch_test作為測試樣本的分類的準確率和錯誤率
%?pc——表示perch_test作為測試樣本的分類的準確率
%?pw——表示perch_test作為測試樣本的分類的錯誤率
%?????????Ss作為一個結構體,表示當salmon_test作為測試樣本的分類的準確率和錯誤率
%?pc——表示perch_test作為測試樣本的分類的準確率
%?pw——表示perch_test作為測試樣本的分類的錯誤率
%case3:協方差矩陣是非對角陣鱸魚和三文魚的協方差矩陣相同
%case4:鱸魚和三文魚的協方差矩陣都是對角陣,但是兩者協方差矩陣不同
%case5:鱸魚和三文魚的協方差矩陣都是非對角陣,但是兩者協方差矩陣不同(更一般的情況)
switch(constant)
????case?3
????mul_salmon=[150120];sigma_salmon=[30-15;-1550];
????mul_perch=[17090];sigma_perch=[30-15;-1550];
????case?4
????mul_perch=[17090];sigma_perch=[350;035];???
????mul_salmon=[150120];sigma_salmon=[280;028];
????case?5
????mul_perch=[17090];sigma_perch=[38-9;-940];
????mul_salmon=[150120];sigma_salmon=[40-13;-1330];
end
perch=mvnrnd(mul_perchsigma_perch10000);%z?=?mvnrnd(musigman):產生多維正態隨機數,mu為期望向量,sigma為協方差矩陣,n為規模。
salmon=mvnrnd(mul_salmonsigma_salmon10000);
[?perch_trainperch_testsalmon_trainsalmon_test?]?=?rand_select(?perchsalmon?);%生成測試樣本和訓練樣本
%繪制perch和salmon的散點圖????
figure(1);
scatter(perch(:1)perch(:2)‘r‘‘.‘);
xlabel(‘樣本長度‘);
ylabel(‘樣本亮度‘);
hold?on
scatter(salmon(:1)salmon(:2)‘b‘‘.‘);
legend(‘perch?鱸魚‘‘salmon?三文魚‘);
title(‘perch和salmon的散點圖‘);
mul_perch_train=mean(perch_train);
sigma_perch_train=cov(perch_train);
%salmon的訓練樣本
mul_salmon_train=mean(salmon_train);
sigma_salmon_train=cov(salmon_train);???????????????????????????
%獲得后驗概率(去掉所謂的常量)
%將測試樣本分給鱸魚的類別
A_perch=ones(size(perch_train1)2);
B_perch=[mul_perch_train(:1)*A_perch(:1)mul_perch_train(:2)*A_perch(:2)];
%利用鱸魚的測試樣本
p_p=-0.5*(perch_test-B_perch)*inv(sigma_perch_train)*(perch_test-B_perch)‘;
y_perch=diag(p_p);%提取對角元素將鱸魚分類到鱸魚的后驗概率
%利用三文魚的測試樣本
s_p=-0.5*(salmon_test-B_perch)*inv(sigma_perch_train)*(salmon_test-B_perch)‘;
y_sal_vsperch=diag(s_p);%將三文魚分類到鱸魚類別的后驗概率
%將測試樣本分給三文魚的類別
A_salmon=ones(size(salmon_train1)2);
B_salmon=[mul_salmon_train(:1)*A_salmon(:1)mul_salmon_train(:2)*A_salmon(:2)];
%利用鱸魚的測試樣本
p_s=-0.5*(perch_test-B_salmon)*inv(sigma_salmon_train)*(perch_test-B_salmon)‘;
y_per_vssalmon=diag(p_s);%提取對角元素將鱸魚分類到三文魚的后驗概率
%利用三文魚的測試樣本
s_s=-0.5*(salmon_test-B_salmon)*inv(sigma_salmon_train)*(salmon_test-B_salmon)‘;
y_salmon=diag(s_s);%將三文魚分類到鱸魚類別的后驗概率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%計算分類結果的準確率和錯誤率
%鱸魚作為測試樣本,分類結果如下
A_p=y_perch-y_per_vssalmon;
Pp.pc=(sum(A_p(:)>0))/size(A_p1);
Pp.pw=(sum(A_p(:)<=0))/size(A_p1);
%三文魚作為測試樣本,分類結果如下
A_s=y_salmon-y_sal_vsperch;
Ss.sc=(sum(A_s(:)>0))/size(A_s1);
Ss.sw=(sum(A_s(:)<=0))/size(A_s1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%繪制相關圖例??
figure(2)
subplot(211);
plot3(perch_test(:1)perch_test(:2)y_perch‘b.‘);
hold?on
plot3(perch_test(:1)perch_test(:2)y_per_vssalmon‘r*‘);?
legend(‘p(鱸魚|鱸魚測試樣本)‘‘p(三文魚|鱸魚測試樣本)‘);
xlabel(‘鱸魚長度測試樣本‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3994??2017-05-09?20:06??貝葉斯分類器的matlab實現\貝葉斯分類器\CASE.m
?????文件???????6661??2017-05-09?16:50??貝葉斯分類器的matlab實現\貝葉斯分類器\classify.m
?????文件???????2587??2017-05-09?17:01??貝葉斯分類器的matlab實現\貝葉斯分類器\classify_2D.m
?????文件???????2138??2017-05-09?16:57??貝葉斯分類器的matlab實現\貝葉斯分類器\K_cp.m
?????文件???????1695??2017-03-11?21:05??貝葉斯分類器的matlab實現\貝葉斯分類器\para_esti.m
?????文件???????1063??2017-03-11?20:59??貝葉斯分類器的matlab實現\貝葉斯分類器\problem01.m
?????文件????????903??2017-05-09?19:50??貝葉斯分類器的matlab實現\貝葉斯分類器\rand_select.m
?????文件????????747??2017-03-11?16:51??貝葉斯分類器的matlab實現\貝葉斯分類器\說明.txt
?????文件????3220992??2018-01-11?19:57??貝葉斯分類器的matlab實現\貝葉斯論實例.ppt
?????目錄??????????0??2017-05-15?14:52??貝葉斯分類器的matlab實現\貝葉斯分類器
?????目錄??????????0??2018-01-11?19:57??貝葉斯分類器的matlab實現
-----------?---------??----------?-----??----
??????????????3240780????????????????????11
評論
共有 條評論