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 confuso para você. O tema é explicado com mais detalhes em outros cursos como Linear Regression with Python ou Classification with Python.
k-Nearest Neighbors
k-NN prevê a classe de uma nova instância analisando suas k amostras de treinamento mais semelhantes.
KNeighborsClassifier implementa esse método no Scikit-learn.
- Para um novo ponto, encontra os k vizinhos mais próximos usando a similaridade das características.
- A classe mais comum entre eles se torna a previsão.
k é um hiperparâmetro (padrão = 5). Valores diferentes alteram o comportamento do modelo, portanto, ajustar k é importante.
KNeighborsClassifier durante .fit()
Diferente de muitos algoritmos, o KNeighborsClassifier simplesmente armazena os dados de treinamento.
Ainda assim, é necessário chamar .fit(X, y) para que o modelo saiba qual conjunto de dados referenciar durante a previsão.
KNeighborsClassifier durante .predict()
Durante a previsão, o classificador busca os k vizinhos mais próximos de cada instância. No exemplo visual, apenas duas características são mostradas; adicionar mais características geralmente melhora a separação das classes e a precisão das previsões.
Nos gifs acima, apenas duas características, 'body_mass_g' e 'culmen_depth_mm', são usadas porque é desafiador visualizar gráficos de dimensões superiores. 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 Código do KNeighborsClassifier
É possível criar um classificador, treiná-lo e verificar sua acurácia utilizando .score().
O argumento n_neighbors controla o valor de k—experimente tanto 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))
Utilizar k=1 pode resultar em acurácia perfeita, mas isso é enganoso porque a avaliação foi realizada no conjunto de treinamento.
Para medir o desempenho real, sempre teste o modelo em dados não vistos.
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 using k=1 might give perfect accuracy on the training set?
How should I properly evaluate the performance of a k-NN model?
What does the `.score()` method actually measure in this context?
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 confuso para você. O tema é explicado com mais detalhes em outros cursos como Linear Regression with Python ou Classification with Python.
k-Nearest Neighbors
k-NN prevê a classe de uma nova instância analisando suas k amostras de treinamento mais semelhantes.
KNeighborsClassifier implementa esse método no Scikit-learn.
- Para um novo ponto, encontra os k vizinhos mais próximos usando a similaridade das características.
- A classe mais comum entre eles se torna a previsão.
k é um hiperparâmetro (padrão = 5). Valores diferentes alteram o comportamento do modelo, portanto, ajustar k é importante.
KNeighborsClassifier durante .fit()
Diferente de muitos algoritmos, o KNeighborsClassifier simplesmente armazena os dados de treinamento.
Ainda assim, é necessário chamar .fit(X, y) para que o modelo saiba qual conjunto de dados referenciar durante a previsão.
KNeighborsClassifier durante .predict()
Durante a previsão, o classificador busca os k vizinhos mais próximos de cada instância. No exemplo visual, apenas duas características são mostradas; adicionar mais características geralmente melhora a separação das classes e a precisão das previsões.
Nos gifs acima, apenas duas características, 'body_mass_g' e 'culmen_depth_mm', são usadas porque é desafiador visualizar gráficos de dimensões superiores. 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 Código do KNeighborsClassifier
É possível criar um classificador, treiná-lo e verificar sua acurácia utilizando .score().
O argumento n_neighbors controla o valor de k—experimente tanto 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))
Utilizar k=1 pode resultar em acurácia perfeita, mas isso é enganoso porque a avaliação foi realizada no conjunto de treinamento.
Para medir o desempenho real, sempre teste o modelo em dados não vistos.
Obrigado pelo seu feedback!