Пример на реальных данных 1: ирисы

Проведем проверку алгоритма на классической задаче: Ирисы Фишера. Объектами являются три типа ирисов: setosa, versicolor, virginica

У каждого объекта есть четыре признака: длина лепестка, ширина лепестка, длина чашелистика, ширина чашелистика. Для удобства визуализации результатов будем использовать первые два признака. В качестве обучающей и контрольной выборок выбрано по 25 представителей каждого из типов ирисов.

%% Example 'iris'% Example with real data %% data preparation%% load dataload 'iris.txt';S = iris;%% eliminating first two attributesS(:,1:2) = [];%% divide data into training part and pert to classifyXL = S([1:25,51:75,101:125],:);X = S([26:50,76:100,126:150],:);%% creating class labelsYL = [ones([25,1]);2*ones([25,1]);3*ones([25,1])]; Y = [ones([25,1]);2*ones([25,1]);3*ones([25,1])]; %% plotting real classes of objectsplot(X(Y == 1,1),X(Y == 1,2),'*r');hold onplot(X(Y == 2,1),X(Y == 2,2),'*b');plot(X(Y == 3,1),X(Y == 3,2),'*g'); %% getting classification%% features standardization [p, m] = size(X); [n, m] = size(XL); Z = [XL; X]; Z =FeaturesStand(Z); XL = Z(1:n,:); Xtemp = Z(n+1:n+p,:);%% choosing parametrsPP = ParAdjust(XL, YL);PP.XL = XL;PP.YL = YL;%% classificationY = WeightKNN(Xtemp, PP); %% plotting resulting classificationplot(X(Y == 1,1),X(Y == 1,2),'or');plot(X(Y == 2,1),X(Y == 2,2),'ob');plot(X(Y == 3,1),X(Y == 3,2),'og');title('Irises classification')xlabel('petal width, cm');ylabel('petal length, cm');legend('Iris Setosa','Iris Versicolour','Iris Virginica','Location','NorthWest'); hold off;

На графике различные классы показаны крестиками различных цветов, а результат классификации показан кружочками соотвествующих цветов. Алгоритм хорошо классифицировал ирисы, допустив 4% ошибок.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: