Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:ia:saa:6_optimizacion_modelo:sobreajuste [2022/02/17 10:10] cesguiro |
— (actual) | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== 06 - Sobreajuste ====== | ||
- | En temas anteriores vimos la regresión polinomial. Vamos a construir datos con un polinomio de grado 2: | ||
- | |||
- | <sxh python> | ||
- | import numpy as np | ||
- | |||
- | import matplotlib.pyplot as plt | ||
- | |||
- | from sklearn.linear_model import LinearRegression | ||
- | from sklearn.model_selection import train_test_split | ||
- | from sklearn.metrics import mean_squared_error | ||
- | from sklearn.preprocessing import PolynomialFeatures | ||
- | </ | ||
- | |||
- | <sxh python> | ||
- | m = 100 | ||
- | X = 6 * np.random.rand(m, | ||
- | y = 0.5 * X**2 + X + 2 +np.random.rand(m, | ||
- | </ | ||
- | |||
- | Mostramos los datos en una gráfica: | ||
- | |||
- | {{: | ||
- | |||
- | Separamos los datos en entrenamiento y test y mostramos los datos de entrenamiento en una gráfica: | ||
- | |||
- | <sxh> | ||
- | X_train, X_test, y_train, y_test = train_test_split(X, | ||
- | </ | ||
- | |||
- | {{: | ||
- | |||
- | Creamos un modelo de regresión lineal simple: | ||
- | |||
- | <sxh python> | ||
- | model = LinearRegression() | ||
- | |||
- | model.fit(X_train, | ||
- | |||
- | y_predict = model.predict(X_train) | ||
- | </ | ||
- | |||
- | {{: | ||
- | |||
- | Como vemos, la recta no se ajusta de forma óptima a nuestros datos. Vamos a ver el MSE: | ||
- | |||
- | <sxh python> | ||
- | rmse = mean_squared_error(y_true = y_train, y_pred = y_predict) | ||
- | print(" | ||
- | |||
- | y_predict = model.predict(X_test) | ||
- | rmse = mean_squared_error(y_true = y_test, y_pred = y_predict) | ||
- | print(" | ||
- | </ | ||
- | |||
- | <sxh base> | ||
- | MSE entrenamiento: | ||
- | MSE test: 1.49 | ||
- | </ |