Этот пример показывает, как построить поверхность принятия решений различных алгоритмов классификации.
Загрузите набор данных радужки Фишера.
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'};
Обучите наивную модель Байеса.
classifier{1} = fitcnb(X,y);
Обучите классификатор дискриминантного анализа.
classifier{2} = fitcdiscr(X,y);
Обучите дерево классификационных решений.
classifier{3} = fitctree(X,y);
Обучите k-ближайших соседей классификатор.
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')
Каждый алгоритм классификации генерирует различные правила принятия решений. Поверхность принятия решений может помочь вам визуализировать эти правила.