-->

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

Regressione Lineare


Regressione lineare con linearRegression(). I passi del machine learning

Passi Regressione lineare

Creazione del Dataset



import numpy as np

# Creazione del dataset
np.random.seed(42)  # Per riproducibilità
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

print("X:\n", X[:5])
print("y:\n", y[:5])

Suddivisione del Dataset

Utilizziamo `train_test_split` per suddividere i dati in set di training e di test (30%).

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

print("X_train:\n", X_train[:5])
print("y_train:\n", y_train[:5])

Costruzione del Modello di Regressione Lineare


Usiamo `LinearRegression` per costruire il modello.

from sklearn.linear_model import LinearRegression

# Costruzione del modello
model = LinearRegression()
model.fit(X_train, y_train)

# Predizioni sul set di test
y_pred = model.predict(X_test)

### Passaggio 4: Validazione dei Risultati Valutiamo il modello utilizzando le metriche MAE, MSE e \(R^2\). - MAE (Mean Absolute Error): misura la media degli errori assoluti tra le predizioni e i valori reali. È una misura della precisione degli errori.
- MSE (Mean Squared Error): misura la media degli errori al quadrato tra le predizioni e i valori reali. Penalizza maggiormente gli errori più grandi rispetto alla MAE.
- \(R^2\) (Coefficient of Determination): indica la proporzione della varianza nei dati dipendenti che è prevedibile dalle variabili indipendenti. Un valore di \(R^2\) pari a 1 indica un modello perfetto.


from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# Calcolo delle metriche
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Mean Absolute Error (MAE): {mae:.2f}")
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R^2: {r2:.2f}")

Codice Completo


import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# Creazione del dataset
np.random.seed(42)  # Per riproducibilità
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# Suddivisione del dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Costruzione del modello
model = LinearRegression()
model.fit(X_train, y_train)

# Predizioni sul set di test
y_pred = model.predict(X_test)

# Calcolo delle metriche
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Mean Absolute Error (MAE): {mae:.2f}")
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R^2: {r2:.2f}")

### Risultati Attesi Ecco cosa ci aspettiamo di ottenere come output:


Mean Absolute Error (MAE): 0.70
Mean Squared Error (MSE): 0.66
R^2: 0.92

Questi risultati indicano che il modello di regressione lineare è abbastanza accurato, con un \(R^2\) di 0.92 che mostra una buona proporzione della varianza spiegata dalle variabili indipendenti.