import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# Generar datos sintéticos
np.random.seed(42)
X = np.random.rand(100, 1) * 10 # Superficie en m²
y = 2.5 * X + np.random.normal(0, 2, size=(100, 1)) # Precio con ruido
# Dividir datos
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Entrenar un modelo de regresión lineal
model = LinearRegression()
model.fit(X_train, y_train)
# Predicciones
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)
# Calcular errores
train_mse = mean_squared_error(y_train, y_pred_train)
test_mse = mean_squared_error(y_test, y_pred_test)
print(f"Error cuadrático medio (Entrenamiento): {train_mse}")
print(f"Error cuadrático medio (Prueba): {test_mse}")
# Visualizar resultados
plt.scatter(X, y, color="blue", label="Datos")
plt.plot(X, model.predict(X), color="red", label="Línea de regresión")
plt.title("Regresión lineal: Predicción de precios")
plt.xlabel("Superficie (m²)")
plt.ylabel("Precio")
plt.legend()
plt.show()