KNN算法matlab函数 ClassificationKNN.fit

ClassificationKNN.fit:建立

mdl =ClassificationKNN.fit(X,Y):基于特征和分类标签返回分类模型。X:每行表示一个特征向量,每列表示特征向量中一个变量。Y:每行代表的是X中特征向量说代表的标签或种类。
mdl = ClassificationKNN.fit(X,Y,Name,Value):value代表K的值

ClassificationKNN.predict:预测

label = predict(mdl,Xnew):Xnew:是待预测的,跟X中特征向量一致,label是预测Xnew返回的类标签

[label,score] = predict(mdl,Xnew):score:Xnew是某一个类标签的可能性。

[label,score,cost] = predict(mdl,Xnew)

预测过程:1,寻找训练集合X中最靠近Xnew 的K个点(距离的度量采用的欧式距离)

         2,记录这K个点的对应标签Y

         3,把Xnew的标签分配给所有K个标签中概率最大的那一个。
example:

导入文件

load fisheriris              

X = meas;

Y = species;

创建一个K=5的KNN分类器

mdl =ClassificationKNN.fit(X,Y,'NumNeighbors',5)

mdl =

ClassificationKNN:

   PredictorNames: {'x1'  'x2'  'x3' 'x4'}

     ResponseName: 'Y'

       ClassNames: {'setosa' 'versicolor'  'virginica'}

   ScoreTransform: 'none'

    NObservations: 150

         Distance: 'euclidean'

     NumNeighbors: 5

举个例子:

clc;
close all;
clear all;
setup
load('histograms.mat','histograms');%改为你所求的特征
encoding = 'hog';
picesPerclass=120;
for i=1:62
   label(:,i)=zeros(1,picesPerclass)+i;
end
X=histograms';    %训练的特征,每行是一个特征向量,列数是特征的维数,行数是特征的个数
Y=label(:);   %与特征对应的label,比如在这个程序中,每个类别都有120个,共62 个类别
mdl =ClassificationKNN.fit(X,Y,'NumNeighbors',1); %训练生成一个模型-1NN
im =edu_imgcrop(imread('img053-01001.png')); %测试的数据
  im=single(imresize(im,[48,48]));
Histograms = hog_encodeImage(im,['pos_test' encoding]) ;
 testHistograms=Histograms';
 characterClass= predict(mdl,Histograms');  %得到最佳的分类。

代码只演示过程

简单就三个:

X=histograms';   

Y=label(:);  

mdl =ClassificationKNN.fit(X,Y,'NumNeighbors',1); %训练生成一个模型-1NN

Histograms = hog_encodeImage(im,['pos_test' encoding]) ;

characterClass= predict(mdl,Histograms');  %测试。

 

你可能感兴趣的:(机器学习)