Визуализируйте поверхности решения различных классификаторов

Этот пример показывает, как построить поверхность решения различных алгоритмов классификации.

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas(:,1:2);
y = categorical(species);
labels = categories(y);

X является числовой матрицей, которая содержит два лепестковых измерения для 150 ирисовых диафрагм. Y является массивом ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.

Визуализируйте данные с помощью графика рассеивания. Сгруппируйте переменные ирисовыми разновидностями.

gscatter(X(:,1),X(:,2),species,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width');

Обучите четыре различных классификатора и сохраните модели в массиве ячеек.

classifier_name = {'Naive Bayes','Discriminant Analysis','Classification Tree','Nearest Neighbor'};

Обучите наивную модель Bayes.

classifier{1} = fitcnb(X,y);

Обучите классификатор дискриминантного анализа.

classifier{2} = fitcdiscr(X,y);

Обучите дерево решений классификации.

classifier{3} = fitctree(X,y);

Обучите соседний классификатор k-nearest.

classifier{4} = fitcknn(X,y);

Создайте сетку точек, охватывающих целый пробел в некоторых границах фактических значений данных.

x1range = min(X(:,1)):.01:max(X(:,1));
x2range = min(X(:,2)):.01:max(X(:,2));
[xx1, xx2] = meshgrid(x1range,x2range);
XGrid = [xx1(:) xx2(:)];

Предскажите ирисовые разновидности каждого наблюдения в XGrid с помощью всех классификаторов. Постройте график рассеивания результатов.

for i = 1:numel(classifier)
   predictedspecies = predict(classifier{i},XGrid);

   subplot(2,2,i);
   gscatter(xx1(:), xx2(:), predictedspecies,'rgb');

   title(classifier_name{i})
   legend off, axis tight
end

legend(labels,'Location',[0.35,0.01,0.35,0.05],'Orientation','Horizontal')

Каждый алгоритм классификации генерирует различные правила принятия решения. Поверхность решения может помочь вам визуализировать эти правила.

Смотрите также

Функции

Похожие темы