🎮 Simulatore EP07_01: Classificatore k-NN Passo dopo Passo
Voto di Maggioranza
Regola k e osserva quali esempi di addestramento (ordinati per distanza) partecipano al voto per la query fissa (★ in x = 3, y = 3).
–
Il KNeighborsClassifier di scikit-learn, utilizzato nel corso del capitolo, nasconde dietro una singola chiamata (.fit / .predict) una regola decisionale piuttosto semplice: per ogni nuova osservazione, calcolare la distanza rispetto a tutti gli esempi di addestramento, selezionare i \(k\) più vicini e votare per la classe di maggioranza tra di essi.
Prima di fare affidamento sulla libreria, ti è stato affidato il compito di implementare questa regola da zero, per uno spazio delle caratteristiche bidimensionale, esattamente come fa internamente il simulatore interattivo della frontiera decisionale del capitolo a ogni clic dell’utente.
1.| Elemento | Ruolo nel k-NN |
|---|---|
| Spazio delle caratteristiche | Insieme di tutti i vettori \((x, y)\) possibili |
| Distanza euclidea | Misura di similarità tra osservazioni |
| \(k\) piccolo | Frontiera irregolare, alta varianza |
| \(k\) grande | Frontiera regolare, alto bias |
| Votazione di maggioranza | Regola decisionale \(\hat y = \operatorname{moda}\{y_i : x_i \in N_k(x)\}\) |
Input:
Output:
0 o 1) per la rispettiva query, nell’ordine di input.Totale classe 1: X.| Input | Output | Osservazione |
|---|---|---|
| 4 3 0 0 0 1 0 0 5 5 1 6 5 1 1 1 1 |
0 Totale classe 1: 0 |
Query vicina al gruppo di classe 0. |
| 4 1 0 0 0 1 0 0 5 5 1 6 5 1 2 0.9 0.1 5.5 5.1 |
0 1 Totale classe 1: 1 |
Con \(k=1\), ogni query eredita la classe del vicino più prossimo. |
%%writefile EP07_01.py
# Codice PythonOverwriting EP07_01.py
TestSuite("EP07_01.py").run()✔️ EP07_01.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP07_01.cases
🔍 Test di Python: EP07_01.py
⚠️ EP07_01.py: file vuoto (meno di 3 righe). Test saltati.