判別分析的MATLAB實現案例

2022-11-19 17:24:04 字數 4155 閱讀 2148

% 讀取 examp10_ 中資料,進行距離判別

讀取資料

% 讀取檔案 examp10_ 的第 1 個工作表中 c2:f51 範圍的資料,即全部樣本資料,

包括未判企業

sample = xlsread('examp10_','','c2:f51');

% 讀取檔案 examp10_ 的第 1 個工作表中 c2:f47 範圍的資料, 即已知組別的樣本資料,

training = xlsread('examp10_','','c2:f47');

% 讀取檔案 examp10_ 的第 1 個工作表中 b2:b47 範圍的資料, 即樣本的分組資訊資料,

group = xlsread('examp10_','','b2:b47');

obs = [1 : 50]';

% 企業的編號

距離判別

% 距離判別,判別函式型別為 mahalanobis,返回判別結果向量 c 和誤判概率 err

[c,err] = classify(sample,training,group,'mahalanobis');

[obs, c]

% 檢視判別結果

err% 檢視誤判概率

% 載入 中資料,進行貝葉斯判別

載入資料load fisheriris

% 把檔案 中資料匯入 matlab 工作空間

檢視資料head0 = ;

% 設定表頭

[head0; num2cell([[1:150]', meas]), species]

% 以元胞陣列形式檢視資料

貝葉斯判別

% 用 meas 和 species 作為訓練樣本,建立乙個樸素貝葉斯分類器物件

objbayes objbayes = species);

% 利用所建立的樸素貝葉斯分類器物件對訓練樣本進行判別,返回判別結果 pre0,pre0 也是字串元胞向量

pre0 =

% 利用 confusionmat 函式, 並根據 species 和 pre0 建立混淆矩陣 (包含總的分類資訊的矩陣)

[clmat, order] = confusionmat(species, pre0);

% 以元胞陣列形式檢視混淆矩陣

[[,order'];order, num2cell(clmat)]

% 檢視誤判樣品編號 gindex1 = grp2idx(pre0);

% 根據分組變數 pre0 生成乙個索引向量 gindex1 gindex2 = grp2idx(species);

% 根據分組變數 species 生成乙個索引向量 gindex2 errid = find(gindex1 ~= gindex2)

% 通過對比兩個索引向量,返回誤判樣品的觀測序號向量

% 檢視誤判樣品的誤判情況 head1 = ;

% 設定表頭

% 用 num2cell 函式將誤判樣品的觀測序號向量 errid 轉為元胞向量, 然後以元胞陣列形式檢視誤判結果

[head1; num2cell(errid), species(errid), pre0(errid)]

% 對未知類別樣品進行判別

% 定義未判樣品觀測值矩陣 x

x = [5.8 2.7 1.

8 0.73 5.6 3.

1 3.8 1.8 6.

1 2.5 4.7 1.

1 6.1 2.6 5.

7 1.9 5.1 3.

1 6.5 0.62 5.

8 3.7 3.9 0.

13 5.7 2.7 1.

1 0.12 6.4 3.

2 2.4 1.6 6.

7 3 1.9 1.1 6.

8 3.5 7.9 1 ];

% 利用所建立的樸素貝葉斯分類器物件對未判樣品進行判別,返回判別結果 pre1,pre1 也是字串元胞向量

pre1 =

% 載入 中資料,進行 fisher 判別

載入資料load fisheriris

% 把檔案 中資料匯入 matlab 工作空間

待判樣品

% 定義待判樣品觀測值矩陣 x

x = [5.8 2.7 1.8 0.73 5.6 3.1 3.8 1.8

6.1 6.1 5.1 5.8 5.7 6.4 6.7 6.8 ];

2.5 2.6 3.1 3.7 2.7 3.2 3 3.5

4.7 5.7 6.5 3.9 1.1 2.4 1.9 7.9

1.1 1.9 0.62 0.13 0.12 1.6 1.1 1

fisher 判別

%利用 fisher 函式進行判別,返回各種結果(見 fisher 函式的注釋) [outclass,tabcan,tabl,tabcon,tabm,tabg] = fisher(x,meas,species)

繪製兩個判別式得分的散點圖

% 利用 fisher 函式進行判別,返回各種結果,其中 ts 為判別式得分 [outclass,tabcan,tabl,tabcon,tabm,tabg,ts] = fisher(x,meas,species);

% 提取各類的判別式得分 ts1 = ts(ts(:,1) == 1,:);

% setosa 類的判別式得分 ts2 = ts(ts(:,1) == 2,:);

% versicolor 類的判別式得分 ts3 = ts(ts(:,1) == 3,:);

% virginica 類的判別式得分 plot(ts1(:,2),ts1(:,3),'ko')

% setosa 類的判別式得分的散點圖 hold on plot(ts2(:,2),ts2(:,3),'k*')

% versicolor 類的判別式得分的散點圖 plot(ts3(:,2),ts3(:,3),'kp')

% virginica 類的判別式得分的散點圖 legend('setosa 類','versicolor 類','virginica 類');

%加標註框 xlabel('第一判別式得分');

%給 x 軸加標籤 ylabel('第二判別式得分');

%給 y 軸加標籤

只用乙個判別式進行 fisher 判別

% 令 fisher 函式的第 4 個輸入為 0.5,就可以只用乙個判別式進行判別 [outclass,tabcan,tabl,tabcon,tabm,tabg] = fisher(x,meas,species,0.5)

function [outclass,tabcan,tabl,tabcon,tabm,tabg,trainscore]

= fisher(sampledata,training,group,contri)

%fisher 判別分析.

% class = fisher(sampledata,training,group) 根據訓練樣本 training 構造判別式,

% 利用所有判別式對待判樣品 sampledata 進行判別. sampledata 和 training 是具有相同

% 列數的矩陣,它們的每一行對應乙個觀測,每一列對應乙個變數. group 是 training 對

應的分組變數,它的每乙個元素定義了 training 中相應觀測所屬的類. group 可以是乙個分類變數,數值向量,字串陣列或字串元胞陣列. training 和 group 必須具有相同的行數.

fisher 函式把 group 中的 nan 或空字串作為缺失資料,從而忽略 training 中相應的觀測. class 中的每個元素指定了 sampledata 中的相應觀測所判歸的類,它和 group 具有相同的資料型別.

class = fisher(sampledata,training,group,contri) 根據累積貢獻率不低於

contri,確定需要使用的判別式個數,預設情況下,使用所有判別式進行判別. contri 是乙個在(0, 1]區間內取值的標量,用來指定累積貢獻率的下限.

[class, tabcan] = fisher(...)以**形式返回所用判別式的係數向量,若 contri 取值為 1,則返回所有判別式的係數向量. tabcan 是乙個元胞陣列,形如

'variable' 'can1' 'can2'

'x1' [-0.2087] [ 0.0065]

'x2' [-0.3862] [ 0.5866]

'x3' [ 0.5540] [-0.2526]

'x4' [ 0.7074] [ 0.7695]

判別分析實驗報告

數學實驗報告 判別分析 一 實驗目的 要求熟練掌握運用spss軟體實現判別分析。二 實驗內容 已知某研究物件分為3類,每個樣品考察4項指標,各類觀測的樣品數分別為7,4,6 另外還有2個待判樣品分別為 第乙個樣品 第二個樣品 運用spss軟體對實驗資料進行分析並判斷兩個樣品的分組。三 實驗步驟及結論...

基於聚類分析和判別分析的學業質量評價研究

作者 聶淑媛談發 吉林省教育學院學報 上旬刊 2015年第02期 摘要 為突破當前中小學單純依據考試總分或平均分進行排序的傳統評價方式,選取全面反映德 智 體 美的13個變數為樣本,通過案例研究,構建了以聚類分析和判別分析為理論指導 以sas軟體為工具的義務教育階段學生學業質量評價體系。實證研究結果...

最優化方法的matlab實現

在生活和工作中,人們對於同乙個問題往往會提出多個解決方案,並通過各方面的論證從中提取最佳方案。最優化方法就是專門研究如何從多個方案中科學合理地提取出最佳方案的科學。由於優化問題無所不在,目前最優化方法的應用和研究已經深入到了生產和科研的各個領域,如土木工程 機械工程 化學工程 運輸排程 生產控制 經...