Visualizzazione e Previsione Regressione Lineare
Effettuare la previsione di 3 valori, stampare il grafico bidimensionale, della retta di regressione ottenuta dal modello, i punti sulla retta relativi alla previsione.
Visualizzazione e Previsione Regressione Lineare
Effettuare la previsione di 3 valori, stampare il grafico bidimensionale, la retta di regressione ottenuta dal modello e i punti sulla retta relativi alla previsione.
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
import matplotlib.pyplot as plt
# 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}")
# Effettuare la previsione di 3 valori
X_new = np.array([[0.5], [1.5], [2.5]])
y_new_pred = model.predict(X_new)
print("X_new:\n", X_new)
print("y_new_pred:\n", y_new_pred)
# Creazione del grafico
plt.figure(figsize=(10, 6))
# Punti certi
plt.scatter(X, y, color='blue', label='Punti Certi')
# Estendere la retta di regressione per coprire i nuovi punti
X_extended = np.append(X, X_new).reshape(-1, 1)
y_extended = model.predict(X_extended)
# Retta di regressione
plt.plot(X_extended, y_extended, color='red', linewidth=2, label='Retta di Regressione')
# Punti sulla retta relativi alla previsione
plt.scatter(X_new, y_new_pred, color='green', edgecolor='black', linewidth=2, marker='s', s=100, label='Punti Predetti')
# Aggiungere etichette e titolo
plt.xlabel('Variabile Indipendente X')
plt.ylabel('Variabile Dipendente y')
plt.title('Regressione Lineare con Previsioni')
plt.legend()
plt.grid(True)
plt.show()