當前位置:成語大全網 - 書法字典 - 字典算法MATLAB

字典算法MATLAB

function [ccr,pgroupt]=knnt(x,group,K,dist,xt,groupt)

%#

%# AIM:用

% # K最近鄰法

%#

%#原理:KNN是壹種監督的、確定的、非參數的

%#分類方法。它使用多數規則來

%#將新對象分配給壹個類。

%#假設每個類中的對象數量

%#也差不多。

%#沒有關於數據分布的假設

%#每個類的方差-協方差矩陣。

%#在下列情況下,變量的數量沒有限制

%#使用歐幾裏德距離。

%#但是,當使用相關系數時

%#變量數必須大於1。

%#參考:Massart D. L .,Vandeginste B. G. M .,Deming S. N .

% # Michotte Y .和Kaufman L .,化學計量學:教科書,

%#第23章,395-397頁,愛思唯爾科學出版社B. V .,

%#阿姆斯特丹1988。

%#

% # INPUT:x:(mxn)m個對象n個變量的數據矩陣,

%#包含幾個類別的樣本(訓練集)

% # group:(MX 1)標記來自

%#訓練集

% # K:整數,最近鄰居的數量

% # dist:整數,

% # = 1,歐幾裏德距離

% # = 2,相關系數,(變量數& gt1)

% # XT:(mtxn)包含mt個對象和n個變量的數據矩陣

%#(測試集或未知)

% # groupt:(MTX 1)標記mt對象的列向量

%#測試集

% #-& gt;如果新對象未知,輸入[]。

%#

%#輸出:ccr:標量,正確分類率

% # pgroupt:行向量,測試集的預測類標簽

% # 0表示該對象不屬於任何類別

%#類

%#

%#子例程:sortlab.m:將組標簽向量分類

%#

%#作者:武文

% # chemo AC的版權所有(c) 1997

% # FABI,布魯塞爾自由大學

% # Laarbeeklaan 103 1090 Jette

%#

%#版本:1.1(28/02/1998)

%#

%#測試:安德裏亞·坎多爾菲

%#

function [ccr,pgroupt]=knnt(x,group,K,dist,xt,groupt);

如果nargin==5,groupt =[];未知對象的結束百分比

距離= dist清除距離百分比變化變量

if size(group,1)>1,

group = group ';%將列向量更改為行向量

groupt = groupt ';%將列向量更改為行向量

結束;

[m,n]=大小(x);定型集大小的百分比

如果距離= = 2 & ampn & lt2,錯誤('變量數必須& gt1 ')、end %來檢查使用相關系數時變量的數量

[mt,n]= size(XT);測試集大小的百分比

dis =零(mt,m);距離的初始值百分比(零矩陣)

%計算每個測試集對象的距離

對於i=1:mt

對於每個訓練集對象和每個測試集對象之間的j = 1:m %

如果距離==1

dis(i,j)=(xt(i,:)-x(j,:)*(xt(i,:)-x(j,:)';%歐幾裏德距離

其他

r=corrcoef(xt(i,:)',x(j,:);%相關系數矩陣

r=r(1,2);%相關系數

dis(i,j)= 1-r * r;% 1 -相關系數的冪

結束

結束

結束

找到最近鄰居的百分比

lab=zeros(1,mt);實驗室初始值的百分比

對於每個測試對象,I = 1:mt %

[a,b]=sort(dis(i,);%排序距離

b=b(查找(a & lt= a(K)));%查找最近鄰索引

b =組(b);%最近鄰對象

[ng,l group]= sort lab(b);%計算最近鄰中每個類的對象數量

a = find(ng = = max(ng));%查找具有最大數量對象的類

如果長度(a)= = 1%只有壹個類

lab(I)= lgroup(a);%類別標簽

其他

lab(I)= 0;%不止壹個類

結束

結束

%計算成功率

if ~isempty(groupt)

dif = groupt-lab;預測類別標簽和已知類別標簽之間的百分比差異

CCR = sum(dif = = 0)/mt;成功率百分比

結束

pgroupt = lab%輸出向量