Escolar Documentos
Profissional Documentos
Cultura Documentos
Em problemas de classificação, o KNN busca classificar uma nova instância (amostra) com base na classe das
K amostras mais próximas (vizinhos) encontradas no conjunto de treinamento. O valor de K é um parâmetro do
algoritmo e deve ser definido pelo usuário. O KNN calcula a distância entre a nova instância e todas as outras
instâncias do conjunto de treinamento (por exemplo, utilizando a distância euclidiana). Em seguida, seleciona
os K vizinhos mais próximos (aqueles com as menores distâncias) e determina a classe mais frequente entre
eles. Essa classe é atribuída à nova instância como a sua classe de predição.
Neste código, foi utilizzado o algoritmo KNN (k-Nearest Neighbors) com diferentes valores de K (K=3 e K=5)
para realizar a classificação das flores íris. O conjunto de dados é carregado a partir do conjunto de dados
padrão do MATLAB, que contém informações sobre as medidas de sepalas e pétalas de três espécies de flores
íris (setosa, versicolor e virginica).
No código abaixo foi realizado a normalização dos dados de entrada, colocando todos os atibutos na mesma
escala entre [0, 1] e armazenados em dados normalizados. A proporçãode treinamento e teste foi definida em
A acurácia foi utilizada como métrica nesse código, a fim de avaliar o desempenho do aloritmo de
classificaçção KNN.
O algoritmo rodou 20 vezes conforme solicitado para ao fim apresentar o máximo, média, minimo e desvio
1
testRatio = 0.3;
for k = 1:20
% Calculando o número de instâncias para treinamento e teste
numInstances = size(X, 1);
numTrain = round(numInstances * trainRatio);
numTest = round(numInstances * testRatio);
% Embaralhando os dados
idx = randperm(numInstances);
X_norm = X_norm(idx, :);
Y = Y(idx);
Mínimo: 0.88889
Máximo: 0.97778
2
disp(['Média: ', num2str(mean(accuracies_k3))]);
Média: 0.94889
Mínimo: 0.91111
Máximo: 0.97778
Média: 0.95556
disp(confusionMat_k3);
21 0 0
0 10 1
0 1 12
disp(confusionMat_k5);
3
21 0 0
0 10 1
0 1 12