clc;clear;
%一
% load('train100.mat');%airplanes和cellphone中各前50个训练数据
% load('train_label100.mat');%airplanes和cellphone训练数据的标签
% load('test18.mat');%airplanes和cellphone中各9个测试数据
% result=KNNtest(train,train_group,test,3);%调用KNNtest
%二
%load('corel1000train800.mat')%载入800个LBP训练数据
%load('corel1000test200.mat')%载入200个LBP测试数据
% load('varcorel1000train800.mat') %LBP的二阶统计量方差,训练数据
% load('varcorel1000test200.mat') %LBP的二阶统计量方差,测试数据
% load('riu2corel1000train800.mat')%800个等价-旋转不变LBP训练数据
% load('riu2corel1000test200.mat')%200个等价-旋转不变LBP测试数据
load('ricorel1000train800.mat')%800个旋转不变LBP训练数据
load('ricorel1000test200.mat')%200个旋转不变LBP测试数据
load('corel1000train_label800.mat')%载入800个训练数据标签,一共十类,每类80个训练数据
load('corel1000test_label200.mat')%载入200个测试数据标签,一共十类,每类20个测试数据
X = train; % use all data for fitting;train100中的训练数据名字为train
%gscatter(X(:,1),X(:,2),species) ;
%legend('Location','best');
Y = train_group; % response data;train_label100中的训练数据的标签名字为train_group
Z=test;%test18中的测试数据名字为test
mdl = fitcknn(X,Y);%调用matlab自带fitcknn函数,使用的是欧式距离。
mdl.NumNeighbors =3 ;%KNN中的k=4
%rloss = resubLoss(mdl);
cvmdl = crossval(mdl);
kloss = kfoldLoss(cvmdl);
predict_label = predict(mdl,Z);%调用matlab中predict函数,对测试数据Z进行预分类预测
%打印测试分类结果
figure;
hold on;
plot(test_group,'o');
plot(predict_label,'r*');
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',10);