Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Il metodo k-Nearest Classificazione


Classificare un valore target basandosi sui suoi vicini più vicini.

il Metodo KNN per la Classificazione Multipla

Il metodo K-Nearest Neighbors (KNN) è uno degli algoritmi di machine learning più semplici e intuitivi utilizzati per la classificazione e la regressione.
Si basa sul principio che un dato punto può essere classificato in base alla maggioranza dei suoi "vicini" più vicini in uno spazio dei dati.

Vantaggi del Metodo KNN

Semplicità KNN è semplice da implementare e comprendere.
Versatilità Funziona sia per problemi di classificazione che di regressione.
Non Parametrico KNN non fa assunzioni sulla distribuzione dei dati.
Adattabilità È molto utile quando il set di dati ha una distribuzione non lineare.

Limiti del Metodo KNN

Complessità Computazionale Può essere computazionalmente costoso, soprattutto con dataset di grandi dimensioni.
Sensibilità ai Dati Prestazioni possono degradare con dati rumorosi o non rilevanti.
Scalabilità Non scala bene con il numero di feature (curse of dimensionality).

Matrice di Confusione e Accuratezza

La matrice di confusione è uno strumento che permette di valutare la qualità di un modello di classificazione, mostrando il numero di veri positivi, veri negativi, falsi positivi e falsi negativi. L'**accuratezza** è una misura che indica la proporzione di previsioni corrette sul totale delle previsioni effettuate.

GridSearchCV

GridSearchCV è una tecnica per trovare i migliori iperparametri per un modello di machine learning.
Esplora in maniera esaustiva una griglia di parametri specificati dall'utente e utilizza la validazione incrociata per determinare la combinazione ottimale.

Esempio di Codice con il Dataset Iris

Esempio di Codice con il Dataset Iris

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, accuracy_score

# Caricare il dataset Iris
iris = load_iris()
X = iris.data
y = iris.target

# Suddividere il dataset in training e test set (80% training, 20% test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Stampare lo shape dei due dataset
print("Shape del training set:", X_train.shape)
print("Shape del test set:", X_test.shape)

# Creare e addestrare il modello KNN
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)

# Effettuare la validazione con il test set
y_pred = knn.predict(X_test)

# Visualizzare la matrice di confusione e l'accuratezza
conf_matrix = confusion_matrix(y_test, y_pred)
accuracy = accuracy_score(y_test, y_pred)

print("Matrice di Confusione:\n", conf_matrix)
print("Accuratezza:", accuracy)

# Definire i migliori parametri usando GridSearchCV
param_grid = {'n_neighbors': np.arange(1, 31)}
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# Migliori parametri trovati da GridSearchCV
print("Migliori parametri trovati:", grid_search.best_params_)

Spiegazione del Codice

  • Caricamento del Dataset: Il dataset Iris viene caricato e suddiviso in variabili di input (X) e target (y).
  • Suddivisione del Dataset: Il dataset viene diviso in un training set (80%) e un test set (20%).
  • Creazione del Modello KNN: Viene creato e addestrato un modello KNN con `n_neighbors=5`.
  • Validazione del Modello: Si effettuano le previsioni sul test set e si calcola la matrice di confusione e l'accuratezza.
  • Ottimizzazione dei Parametri: GridSearchCV viene utilizzato per trovare i migliori parametri per il modello KNN.