KNeighborsClassifier
Ao criar o estimador final em um pipeline, o modelo escolhido foi o KNeighborsClassifier
. Este capítulo fornece uma breve explicação de como o algoritmo funciona.
O funcionamento dos modelos não é o foco principal deste curso, portanto, não há problema se algo parecer pouco claro para você. Esse tema é explicado com mais detalhes em outros cursos como Regressão Linear com Python ou Classificação com Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) é um algoritmo de aprendizado de máquina que prevê resultados identificando as instâncias mais semelhantes no conjunto de treinamento.
KNeighborsClassifier
é a implementação do Scikit-learn desse algoritmo para tarefas de classificação. O processo de previsão funciona da seguinte forma:
- Para uma nova instância, identifica-se as k instâncias de treinamento mais próximas com base na similaridade das características. Essas são chamadas de vizinhos.
- Determina-se a classe mais frequente entre os k vizinhos. Essa classe se torna a previsão para a nova instância.
O parâmetro k especifica o número de vizinhos a serem considerados. Por padrão, está definido como 5. Diferentes valores de k podem levar a previsões diferentes, tornando-o um hiperparâmetro — um parâmetro escolhido antes do treinamento que afeta diretamente o comportamento do modelo.
Experimentar diferentes valores de k e selecionar aquele que proporciona o melhor desempenho é chamado de ajuste de hiperparâmetros. Esse processo é essencial para otimizar o modelo.
KNeighborsClassifier durante .fit()
Diferente da maioria dos modelos de ML, o KNeighborsClassifier
apenas armazena o conjunto de treinamento durante o treinamento. Mesmo que o treinamento não consuma tempo, é obrigatório chamar .fit(X, y)
para que ele memorize o conjunto de treinamento.
KNeighborsClassifier durante .predict()
Durante a predição, o KNeighborsClassifier
busca de forma gananciosa os k vizinhos mais próximos para cada nova instância.
Nos gifs acima, apenas duas features, 'body_mass_g'
e 'culmen_depth_mm'
, são utilizadas porque é difícil visualizar gráficos de alta dimensão. Incluir features adicionais provavelmente ajudará o modelo a separar melhor os pontos de dados verdes e vermelhos, permitindo que o KNeighborsClassifier
faça previsões mais precisas.
Exemplo de Codificação com KNeighborsClassifier
Crie um KNeighborsClassifier
, treine-o e avalie sua acurácia utilizando o método .score()
. O conjunto de dados no arquivo .csv
já está pré-processado.
O número de vizinhos (k) é especificado pelo argumento n_neighbors
ao inicializar o KNeighborsClassifier
. Experimente tanto o valor padrão 5 quanto 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Os resultados mostram alta acurácia, chegando a ser perfeita com 1-vizinho mais próximo.
No entanto, esses escores não são confiáveis porque a avaliação foi feita no conjunto de treinamento—os mesmos dados nos quais o modelo foi treinado. Nesse caso, o modelo simplesmente prevê instâncias que já viu anteriormente.
Para avaliar o desempenho corretamente, o modelo deve ser testado em dados que ainda não encontrou.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain why evaluating on the training set is unreliable?
How should I properly evaluate the performance of a KNeighborsClassifier?
What is the difference between using 1 neighbor and 5 neighbors in k-NN?
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Deslize para mostrar o menu
Ao criar o estimador final em um pipeline, o modelo escolhido foi o KNeighborsClassifier
. Este capítulo fornece uma breve explicação de como o algoritmo funciona.
O funcionamento dos modelos não é o foco principal deste curso, portanto, não há problema se algo parecer pouco claro para você. Esse tema é explicado com mais detalhes em outros cursos como Regressão Linear com Python ou Classificação com Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) é um algoritmo de aprendizado de máquina que prevê resultados identificando as instâncias mais semelhantes no conjunto de treinamento.
KNeighborsClassifier
é a implementação do Scikit-learn desse algoritmo para tarefas de classificação. O processo de previsão funciona da seguinte forma:
- Para uma nova instância, identifica-se as k instâncias de treinamento mais próximas com base na similaridade das características. Essas são chamadas de vizinhos.
- Determina-se a classe mais frequente entre os k vizinhos. Essa classe se torna a previsão para a nova instância.
O parâmetro k especifica o número de vizinhos a serem considerados. Por padrão, está definido como 5. Diferentes valores de k podem levar a previsões diferentes, tornando-o um hiperparâmetro — um parâmetro escolhido antes do treinamento que afeta diretamente o comportamento do modelo.
Experimentar diferentes valores de k e selecionar aquele que proporciona o melhor desempenho é chamado de ajuste de hiperparâmetros. Esse processo é essencial para otimizar o modelo.
KNeighborsClassifier durante .fit()
Diferente da maioria dos modelos de ML, o KNeighborsClassifier
apenas armazena o conjunto de treinamento durante o treinamento. Mesmo que o treinamento não consuma tempo, é obrigatório chamar .fit(X, y)
para que ele memorize o conjunto de treinamento.
KNeighborsClassifier durante .predict()
Durante a predição, o KNeighborsClassifier
busca de forma gananciosa os k vizinhos mais próximos para cada nova instância.
Nos gifs acima, apenas duas features, 'body_mass_g'
e 'culmen_depth_mm'
, são utilizadas porque é difícil visualizar gráficos de alta dimensão. Incluir features adicionais provavelmente ajudará o modelo a separar melhor os pontos de dados verdes e vermelhos, permitindo que o KNeighborsClassifier
faça previsões mais precisas.
Exemplo de Codificação com KNeighborsClassifier
Crie um KNeighborsClassifier
, treine-o e avalie sua acurácia utilizando o método .score()
. O conjunto de dados no arquivo .csv
já está pré-processado.
O número de vizinhos (k) é especificado pelo argumento n_neighbors
ao inicializar o KNeighborsClassifier
. Experimente tanto o valor padrão 5 quanto 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Os resultados mostram alta acurácia, chegando a ser perfeita com 1-vizinho mais próximo.
No entanto, esses escores não são confiáveis porque a avaliação foi feita no conjunto de treinamento—os mesmos dados nos quais o modelo foi treinado. Nesse caso, o modelo simplesmente prevê instâncias que já viu anteriormente.
Para avaliar o desempenho corretamente, o modelo deve ser testado em dados que ainda não encontrou.
Obrigado pelo seu feedback!