Menu
CoddyTech

Como o k-NN Decide

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 6 de 58.

Este capítulo explica o k-NN. Ao final, você será capaz de desenhar seu mapa para quaisquer dados, como este para pimentas suaves e ardidas:

80 pimentas representadas pelo comprimento e pela espessura da parede em um mapa sombreado: uma região laranja à esquerda onde o modelo indica ardida, uma região azul à direita onde indica suave

Para classificar uma nova pimenta, k-vizinhos mais próximos encontra as k pimentas de treinamento mais próximas dela, e elas votam:

Um close-up das pimentas com uma estrela preta indicando uma nova pimenta. Linhas cinzas a conectam às suas 5 pimentas mais próximas: 3 picantes e 2 suaves, então picante vence

Mais próximo significa a menor distância, aquela que você conheceu na seção 2. Você escolhe k:

model = KNeighborsClassifier(n_neighbors=5)

n_neighbors é k, 5, a menos que você diga o contrário. Com duas classes, um k ímpar nunca pode resultar em empate.

challenge icon

Desafio

Fácil

Um clube de astronomia classifica as estrelas em stars.csv como anãs ou gigantes, com base na temperatura e na magnitude. O código inicial lê uma nova estrela e k.

  1. Encontre manualmente as k estrelas mais próximas: adicione uma coluna distance e, em seguida, ordene.
  2. Imprima quantas delas são gigantes e, depois, a vencedora da votação.
  3. Confira com um modelo k-NN desse k, treinado com todas as estrelas.

Para a estrela e o k de outro clube, com k = 5:

Giants among the nearest 5: 4
By hand: giant
Model: giant

Experimente você mesmo

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier

# Uma linha por estrela: temperatura em milhares de kelvin, magnitude (quanto menor, mais brilhante), anã ou gigante
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]

# A nova estrela e k
temp = float(input())
mag = float(input())
k = int(input())
new_star = pd.DataFrame({"temp_kK": [temp], "magnitude": [mag]})

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado supervisionado

Pratique por conta própria: Compilador de Python online