Menu
CoddyTech

Come decide k-NN

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 6 di 58.

Questo capitolo approfondisce k-NN. Alla fine, saprai tracciare la sua mappa per qualsiasi dato, come questa per i peperoncini dolci e piccanti:

80 peperoncini in base alla lunghezza e allo spessore della parete, su una mappa colorata: una regione arancione a sinistra, dove il modello indica che sono piccanti, e una regione blu a destra, dove indica che sono dolci

Per classificare un nuovo peperoncino, il metodo dei k vicini più prossimi individua i k peperoncini di addestramento più vicini e li mette ai voti:

Un primo piano dei peperoncini con una stella nera che indica quello nuovo. Linee grigie lo collegano ai suoi 5 peperoncini più vicini: 3 piccanti e 2 dolci, quindi vincono i piccanti

Più vicino significa la distanza più piccola, quella che hai incontrato nella sezione 2. Scegli k:

model = KNeighborsClassifier(n_neighbors=5)

n_neighbors è k, 5 se non specifichi diversamente. Con due classi, un valore dispari di k non può mai produrre un pareggio.

challenge icon

Sfida

Facile

Un club di astronomia suddivide le stelle in stars.csv in nane e giganti in base alla temperatura e alla magnitudine. Il codice iniziale legge una nuova stella e k.

  1. Trova a mano le k stelle più vicine: aggiungi una colonna distance, poi ordina.
  2. Stampa quante sono giganti, poi la vincitrice della votazione.
  3. Verifica con un modello k-NN di quel k, addestrato su tutte le stelle.

Per la stella e il k di un altro club, con k = 5:

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

Provalo tu

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

# Una riga per stella: temperatura in migliaia di kelvin, magnitudine (più piccola significa più luminosa), nana o gigante
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]

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

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online