Classe “KNeighborsClassifier”
A classe KNeighborsClassifier
é uma implementação do algoritmo k-Nearest Neighbors (kNN) para classificação de dados em Python, fornecida pelo módulo sklearn.neighbors
da biblioteca Scikit-learn.
O algoritmo k-Nearest Neighbors é um método de aprendizado supervisionado utilizado para classificação e regressão. No contexto da classificação, o objetivo é prever a classe de um novo exemplo com base nas classes dos “k” vizinhos mais próximos no conjunto de treinamento.
A classe KNeighborsClassifier
do Scikit-learn permite criar um modelo de classificação kNN facilmente. Para isso, é necessário especificar o valor de k
, que representa o número de vizinhos a serem considerados na classificação. Além disso, existem outras opções configuráveis para controlar o comportamento do classificador, como a métrica de distância a ser utilizada (padrão é a distância euclidiana) e a estratégia de votação (por maioria ou ponderada).
Principais parâmetros
-
n_neighbors
: Número de vizinhos a serem considerados (valor dek
). -
weights
: Estratégia de votação. Pode ser ‘uniform’ para votos iguais ou ‘distance’ para votos ponderados pela inversa da distância. -
metric
: Métrica de distância a ser utilizada para calcular a proximidade entre os exemplos. A métrica padrão é a distância euclidiana (‘minkowski’ comp=2
). -
p
: Parâmetrop
para a métrica Minkowski. Quandop=1
, corresponde à distância de Manhattan, e quandop=2
, corresponde à distância euclidiana. -
algorithm
: Algoritmo utilizado para calcular os vizinhos mais próximos. Pode ser ‘auto’, ‘ball_tree’, ‘kd_tree’ ou ‘brute’.
Principais métodos
-
fit(X, y)
: Treina o modelo com o conjunto de treinamentoX
e as classes alvoy
. -
predict(X)
: Realiza as previsões das classes para o conjunto de dadosX
com base nos vizinhos mais próximos. -
kneighbors(X, n_neighbors)
: Retorna as distâncias e índices dosn_neighbors
vizinhos mais próximos para cada exemplo emX
.
Exemplo
from sklearn.neighbors import KNeighborsClassifier
# Conjunto de treinamento e classes alvo
X_train = [[0, 0], [1, 1], [2, 2], [3, 3]]
y_train = [0, 0, 1, 1]
# Criando o classificador kNN com k=3 e distância euclidiana
knn_classifier = KNeighborsClassifier(n_neighbors=3)
# Treinando o modelo
knn_classifier.fit(X_train, y_train)
# Realizando previsões para novos exemplos
X_new = [[1.5, 1.5], [2.5, 2.5]]
predictions = knn_classifier.predict(X_new)
print(predictions) # Saída: [0, 1]
Em resumo, a classe KNeighborsClassifier
é uma ferramenta poderosa e flexível para a implementação do algoritmo k-Nearest Neighbors em tarefas de classificação, permitindo que você ajuste facilmente o valor de k
e outras opções de configuração para melhor se adequar ao seu conjunto de dados e problema específico.
Lembrando que para que o algoritmo kNN tenha um bom desempenho, é imprescindível realizar um bom pré-processamento dos dados do conjunto, caso contrário pode haver uma redução de 15% a 20% na precisão desse algoritmo.