-->

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 Regressione


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

Metodo KNN per la Regressione Multipla

Il metodo K-Nearest Neighbors (KNN) non è solo efficace per la classificazione, ma può essere utilizzato anche per problemi di regressione. Nella regressione, KNN predice il valore di un nuovo punto in base ai valori medi dei suoi "k" vicini più vicini.

Esempio di Codice con il Dataset Diabetes



import numpy as np
import pandas as pd
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import r2_score, mean_squared_error
import matplotlib.pyplot as plt

# Caricare il dataset Diabetes
diabetes = load_diabetes()
X = diabetes.data
y = diabetes.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 per la regressione
knn = KNeighborsRegressor(n_neighbors=13)
knn.fit(X_train, y_train)

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

# Calcolare e visualizzare R2 score e Mean Squared Error
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)

print("R2 score:", r2)
print("Mean Squared Error:", mse)

# Visualizzare i risultati con matplotlib
plt.figure(figsize=(10, 5))
plt.scatter(y_test, y_pred, color='blue', edgecolor='k', alpha=0.6)
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], 'k--', lw=3)
plt.xlabel('Valori Reali')
plt.ylabel('Valori Predetti')
plt.title('Valori Reali vs Valori Predetti')
plt.show()

# Definire i migliori parametri usando GridSearchCV
param_grid = {'n_neighbors': np.arange(1, 31)}
grid_search = GridSearchCV(KNeighborsRegressor(), 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 Diabetes 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 per la Regressione: Viene creato e addestrato un modello KNN con `n_neighbors=13`.
  • Validazione del Modello: Si effettuano le previsioni sul test set e si calcolano il R2 score e il Mean Squared Error.
  • Visualizzazione dei Risultati: Utilizzando matplotlib, si visualizzano i valori reali rispetto ai valori predetti.
  • Ottimizzazione dei Parametri: GridSearchCV viene utilizzato per trovare i migliori parametri per il modello KNN.