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 se preocupe se algo parecer confuso. O tema é abordado em mais detalhes em outros cursos, como Linear Regression with Python ou Classification with 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 deste 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. Estas são chamadas de vizinhos.
- Determina-se a classe mais frequente entre os k vizinhos. Essa classe será 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. Embora o treinamento não consuma tempo, a chamada do método .fit(X, y) é obrigatória para que ele memorize o conjunto de treinamento.
KNeighborsClassifier durante .predict()
Durante a previsão, o KNeighborsClassifier busca de forma gananciosa os k vizinhos mais próximos para cada nova instância.
Nos gifs acima, apenas duas características, 'body_mass_g' e 'culmen_depth_mm', são utilizadas porque a visualização de gráficos com mais dimensões é desafiadora. Incluir características 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 com o argumento n_neighbors ao inicializar o KNeighborsClassifier. Teste 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, essas pontuações 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 se preocupe se algo parecer confuso. O tema é abordado em mais detalhes em outros cursos, como Linear Regression with Python ou Classification with 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 deste 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. Estas são chamadas de vizinhos.
- Determina-se a classe mais frequente entre os k vizinhos. Essa classe será 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. Embora o treinamento não consuma tempo, a chamada do método .fit(X, y) é obrigatória para que ele memorize o conjunto de treinamento.
KNeighborsClassifier durante .predict()
Durante a previsão, o KNeighborsClassifier busca de forma gananciosa os k vizinhos mais próximos para cada nova instância.
Nos gifs acima, apenas duas características, 'body_mass_g' e 'culmen_depth_mm', são utilizadas porque a visualização de gráficos com mais dimensões é desafiadora. Incluir características 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 com o argumento n_neighbors ao inicializar o KNeighborsClassifier. Teste 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, essas pontuações 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!