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'); %测试。