Você está na página 1de 4

Universidade Federal do Piauí - UFPI

Disciplina: Redes Neurais

Docente: Fábio Rocha

Discente: Isleane Paiva Machado

1. DMC ( Distância Média ao Centróide)


Uma abordagem de classificação que se baseia nos centróides das classes para tomar decisões. Nesse
método, os centróides são calculados para cada classe a partir dos dados de treinamento. Durante a
classificação de uma nova instância, são determinadas as distâncias entre ela e os centróides de cada classe.
A instância é então atribuída à classe cujo centróide está mais próximo, definindo sua categoria final.

No código abaixo foi realizado a normalização dos dados de entrada, colocando todos os atributos na mesma
escala entre [0, 1] e armazenados em dados normalizados. A proporçãode treinamento e teste foi definida em
70% e 30% respectivamente.

O algoritmo rodou 20 vezes conforme solicitado para ao fim apresentar o máximo, média, minimo e desvio
padrão das iterações.

Os dados foram embaralhados a fim de melhorar a capaidade de generalização do modelos em dados


desconhecidos.

% Carregando o conjunto de dados das flores iris


load fisheriris;

% Separando os dados de entrada e rótulos


X = meas; % atributos de medidas
Y = species;

% Normalização Min-Max dos dados de entrada


X_norm = (X - min(X)) ./ (max(X) - min(X));

% Definindo a proporção de treinamento e teste


trainRatio = 0.7;
testRatio = 0.3;

% Inicializando vetor para armazenar os resultados


numIterations = 20;
accuracies = zeros(numIterations, 1);

% Convertendo os rótulos para valores numéricos


[Y_numeric, ~] = grp2idx(Y);

% Obtendo o número de classes


numClasses = numel(unique(Y_numeric));

1
for k = 1:numIterations
% Embaralhando os dados
idx = randperm(size(X, 1));
X_shuffled = X_norm(idx, :);
Y_shuffled = Y_numeric(idx);

% Dividindo os dados em treinamento e teste de forma estratificada


numTrainPerClass = floor(trainRatio * size(X, 1) / numClasses);
numTestPerClass = floor(testRatio * size(X, 1) / numClasses);

Xtrain = [];
Xtest = [];
Ytrain = [];
Ytest = [];

for i = 1:numClasses
class_indices = find(Y_shuffled == i);
train_indices = class_indices(1:numTrainPerClass);
test_indices =
class_indices(numTrainPerClass+1:numTrainPerClass+numTestPerClass);

Xtrain = [Xtrain; X_shuffled(train_indices, :)];


Xtest = [Xtest; X_shuffled(test_indices, :)];
Ytrain = [Ytrain; Y_shuffled(train_indices)];
Ytest = [Ytest; Y_shuffled(test_indices)];
end

% Calculando os centróides para cada classe


centroids = zeros(numClasses, size(Xtrain, 2));
for i = 1:numClasses
class_instances = Xtrain(Ytrain == i, :);
centroids(i, :) = mean(class_instances);
end

% Classificação usando o algoritmo do Classificador de Mínima Distância ao


Centróide (DMC)
Ypred = zeros(size(Ytest));
for i = 1:size(Xtest, 1)
distances = sum((centroids - Xtest(i, :)).^2, 2);
[~, nearestIdx] = min(distances);
Ypred(i) = nearestIdx;
end

% Calculando a acurácia
accuracy = sum(Ypred == Ytest) / numel(Ytest);
accuracies(k) = accuracy;
end

2. APRESENTAÇÃO DE MÁXIMA, MÉDIA, MÍNIMO E DESVIO PADRÃO

2
Apresentar o máximo, média, mínimo e desvio padrão das iterações fornece informações valiosas sobre a
variabilidade do desempenho do modelo durante o processo de treinamento e avaliação.

% Apresentando os resultados
disp(['Mínimo: ', num2str(min(accuracies))]);

Mínimo: 0.86667

disp(['Máximo: ', num2str(max(accuracies))]);

Máximo: 0.97778

disp(['Média: ', num2str(mean(accuracies))]);

Média: 0.92889

disp(['Desvio Padrão: ', num2str(std(accuracies))]);

Desvio Padrão: 0.035025

3. APRESENTAÇÃO DA MATRIZ DE CONFUSÃO


A matriz de confusão é uma tabela que permite visualizar o desempenho do modelo de classificação ao
comparar suas predições com os rótulos verdadeiros dos dados de teste.

% Calculando a matriz de confusão


confusionMatrix = confusionmat(Ytest, Ypred);

% Apresentando a matriz de confusão


disp('Matriz de Confusão:');

Matriz de Confusão:

disp(confusionMatrix);

15 0 0
0 14 1
0 2 13

4. GRÁFICO DE DISPERSÃO DAS ESPÉCIES


% Gerando o gráfico de dispersão
figure;
gscatter(X_norm(:, 1), X_norm(:, 2), Y);
xlabel('Sepal Length');
ylabel('Sepal Width');
title('Classificação de Flores Íris com DMC');
legend('Iris setosa', 'Iris versicolor', 'Iris virginica');

3
4

Você também pode gostar