Ferramentas do usuário

Ferramentas do site


ia:knearest

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
ia:knearest [2026/07/22 12:21] – removida - edição externa (Data desconhecida) 127.0.0.1ia:knearest [2026/07/22 12:21] (atual) – ↷ Página movida de knearest para ia:knearest jdos
Linha 1: Linha 1:
 +====== K-Nearest Neighbour ======
  
 +kNN é um dos algoritmos de **classificação** mais simples disponíveis para aprendizado supervisionado. 
 +
 +A ideia é procurar as correspondências mais próximas dos dados de teste no espaço de recursos.
 +
 +O KNN tenta classificar cada amostra de um conjunto de dados avaliando sua distância em relação aos vizinhos mais próximos.
 +
 +Se os vizinhos mais próximos forem majoritariamente de uma classe, a amostra em questão será classificada nesta categoria. 
 +
 +Como o próprio nome já diz, "k-vizinhos mais próximos", podemos determinar o número ''k''. 
 +
 +Quando o ''k'' é pequeno a classificação fica mais sensível a regiões bem próximas podendo ocorrer o overfitting.
 +
 +Por outro lado com ''k'' grande, a classificação fica menos sujeita a ruídos podendo ser considerada mais robusta.
 +
 +Porém se ''k'' for grande demais pode ser que haja o problema de underfitting.
 +
 +===== Exemplos =====
 +
 +
 +==== k=3 ====
 +
 +{{:nova-amostra-para-classificar.jpg?nolink&200|}}{{:classificando-a-amostra.png?200|}} {{:classificacao-escolhida.jpg?200|}}
 +
 +==== k=3 ====
 +\\
 +{{:proxima-amostra.jpg?nolink&200|}}
 +{{:k3.jpg?200|}}{{:classe-final-com-k3.jpg?200|}}
 +
 +\\
 +==== k=5 ====
 +{{:proxima-amostra.jpg?nolink&200 |}}{{:knn-com-k5-300x292.jpg?nolink&200|}}{{:classe-final-com-k5-300x292.jpg?nolink&200|}}
 +
 +==== Código ====
 +
 +<file python knn.py>
 +
 +import cv2 as cv
 +import numpy as np
 +import matplotlib.pyplot as plt
 +# Feature set containing (x,y) values of 25 known/training data
 +trainData = np.random.randint(0,100,(25,2)).astype(np.float32)
 +# Label each one either Red or Blue with numbers 0 and 1
 +responses = np.random.randint(0,2,(25,1)).astype(np.float32)
 +# Take Red neighbours and plot them
 +red = trainData[responses.ravel()==0]
 +plt.scatter(red[:,0],red[:,1],80,'r','^')
 +# Take Blue neighbours and plot them
 +blue = trainData[responses.ravel()==1]
 +plt.scatter(blue[:,0],blue[:,1],80,'b','s')
 +plt.show()
 +
 +newcomer = np.random.randint(0,100,(1,2)).astype(np.float32)
 +plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o')
 +knn = cv.ml.KNearest_create()
 +knn.train(trainData, cv.ml.ROW_SAMPLE, responses)
 +ret, results, neighbours ,dist = knn.findNearest(newcomer, 3)
 +print( "result: {}\n".format(results) )
 +print( "neighbours: {}\n".format(neighbours) )
 +print( "distance: {}\n".format(dist) )
 +plt.show()
 +</file>
 +
 +Resultado:
 +
 +{{ :espaco.png?nolink&500 |}}
 +
 +\\ 
 +<code>
 +result: [[1.]]
 +
 +neighbours: [[0. 1. 1.]]
 +
 +distance: [[185. 290. 349.]]
 +</code>
 +
 +===== Referências =====
 +
 +[[https://didatica.tech/o-que-e-e-como-funciona-o-algoritmo-knn/|Algoritmo Knn]]

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki