UVM Universidad del Valle de México
LAUREATE INTERNATIONAL UNIVERSITIES®
Nombre del estudiante:
Axel De la Rosa Castañon
Nombre del trabajo:
Examen
Fecha de entrega:
26 de marzo del 2025
Campus:
Hermosillo
Carrera:
Ingeniería Industrial y de Sistemas
Semestre:
6º semestre
Nombre del maestro:
Luis Enrique Cuevas Picos
Nombre de la asignatura:
Análisis de DatosGuía Análisis de Datos
Regresión Lineal
La regresión lineal es un modelo estadístico que representa la relación entre una
variable dependiente y y una variable independiente xx mediante una línea recta:
y=b0+b1x+€
Componentes de la Regresión Lineal
- b0 (intercepto): Valor de y cuando x=0
- b1 (pendiente): Indica cómo cambia y por cada unidad de cambio en x
- x (variable independiente)
- E (error residual): Diferencia entre los valores reales y los valores predichos.
Implementación en Python
#Datos
data :
{
'edad' : [23, 25, 28, 30],
'salario' : [30000, 32000, 35000, 36000]
}
df = pd. DataFrame (data)
df
- Se crea un diccionario llamado data con dos pares clave-valor
- Luego, se construye un DataFrame con pd.DataFrame(data)
- El diccionario data se pasa como argumento, quiere decir que hará el df en
base a los datos proporcionados
. Un DataFrame es una estructura de datos bidimensional, similar a una tabla
en pandas, similar a una hoja de cálculo.
# Regresion linealslope, intercept, r_value, p_value, std err =
stats . linregress (df ['edad' ] , df [ ' salario' ] )
print ("coeficiente de correlación (r) : ", r value)
_
print ("slope (a) : ", slope)
print ("intercept (b) : ", intercept)
Este código realiza una regresión lineal simple utilizando la función stats.linregress
de la biblioteca SciPy.
- slope: Representa la pendiente (a) de la línea de regresión, que indica cómo
cambia el salario por cada incremento unitario en la edad.
- intercept: Es la intersección (b) con el eje Y, el salario estimado cuando la
edad es cero.
- r_value: Es el coeficiente de correlación, que mide la fuerza y dirección de la
relación entre edad y salario.
- p_value: Evalúa la significancia estadística de la relación (un valor pequeño
implica una relación significativa).
- std_err: Es el error estándar de la pendiente, que mide la precisión de esta
estimación.
Gráfica de Regresión Lineal
# Grafica
plt. figure (figsize= (8, 6) )
plt . scatter (df ['edad' ] , df [ 'salario' ], color='blue', label= ' Datos' )
plt . plot (df [ 'edad' ] , slope * df [ 'edad' ] + intercept, color='red' ,
label='Regresión Lineal')
plt . xlabel ( 'Edad')
plt . ylabel ( ' Salario' )
plt. title ('')
plt . grid (True)plt . legend ()
plt. show ()
Este código genera una gráfica de dispersión y una línea de regresión lineal
utilizando la biblioteca Matplotlib
- Tamaño de la figura: Se define con plt.figure(figsize=(8, 6)), configurando las
dimensiones de la gráfica en pulgadas.
- Gráfica de dispersión: Con plt.scatter, se grafican los puntos de los datos
originales (edad vs. salario) en azul, con la etiqueta "Datos".
- Línea de regresión: plt.plot añade una línea roja calculada mediante la
fórmula de la regresión lineal
- Etiquetas: Se añaden las etiquetas para los ejes X (Edad) e Y (Salario) con
plt.xlabel y plt.ylabel.
- Cuadrícula y leyenda: plt.grid(True) habilita la cuadrícula, y plt.legend()
muestra un recuadro que identifica los elementos visualizados (puntos y
línea).
- Mostrar la gráfica: Finalmente, plt.show() renderiza el gráfico con todos los
elementos configurados.
Correlación de Pearson (r)
La correlación de Pearson mide la fuerza y dirección de la relación lineal entre dos
variables. Su valor varía entre -1 y 1.
- r = 1 : Correlación positiva perfecta (cuando x aumenta, y también).
- r = 0 : No hay correlación.
- r = - 1 : Correlación negativa perfecta (cuando x aumenta, y disminuye).
Cuanto más cerca de 1 o -1, más fuerte es la relación lineal.
Coeficiente de Determinación (R^2)
El coeficiente de determinación indica que porcentaje de la variabilidad en y es
explicada por x en un modelo de regresión.
- R^2 = 1 : El modelo explica el 100% de la variabilidad de y.
- R^2 = 0 : El modelo no explica nada de la variabilidad de y.
Cuanto más cercano a 1, mejor se ajusta el modelo.
Regresión Lineal Múltiple y Regresión Polinomial
Regresión Múltiple
Se extiende la regresión lineal para incluir múltiples variables independientes:
y=b0+b1x1+b2x2+ ... +bnxn+€
Componentes de Regresión Múltiple
- x1,x2, ... ,xn: Variables predictoras.
- b1,b2, ... ,bn: Coeficientes de regresión, que indican el impacto de cada
variable sobre y.
Regresión Polinomial
Extensión de la regresión lineal que permite modelar relaciones no lineales entre
variables. Añade términos polinómicos a las variables independientes para capturar
patrones más complejos en los datos.
y=b0+b1x+b2x^2+ ... +bnx^n+€
Componentes de Regresión Polinomial
- Grado del polinomio: Determina la curvatura del modelo.
- Transformación de datos: Se convierten x en x^2, x^3, ... , x^n.
Implementación en Python para Regresión Múltiple y Polinomial
from sklearn. preprocessing import PolynomialFeatures
from sklearn. linear model import LinearRegression
X = df [ [ 'Edad' , ' Peso ' ] ]
Y
=
df [ ' Altura ' ]modelo = LinearRegression ()
modelo. fit (X, Y)
Y pred_lineal = modelo. predict (X)
poly = PolynomialFeatures (degree=2)
X poly = poly. fit_transform (X)
modelo poly = LinearRegression ()
modelo poly . fit (X poly, Y)
Y_pred_poly = modelo_poly . predict (X_poly)
Este código realiza tanto una regresión lineal múltiple como una regresión
polinómica de grado 2.
- Regresión lineal múltiple:
- Se define el modelo lineal con LinearRegression() y se ajusta a los
datos de entrada X (Edad y Peso) y Y (Altura) usando modelo.fit(X, Y).
- Las predicciones del modelo lineal (Y_pred_lineal) se generan con
modelo.predict(X).
- Este modelo asume una relación directa entre las variables
independientes y la variable dependiente.
- Transformacion polinómica:
- Se utiliza PolynomialFeatures(degree=2) para ampliar los datos de
entrada X, incluyendo términos polinómicos (como cuadrados y
productos cruzados de las variables independientes).
- La matriz resultante X_poly contiene las variables originales junto con
las nuevas características polinómicas.
- Regresión polinómica:
- Se crea el modelo lineal (modelo_poly) y se ajusta a los datos
transformados X_poly y Y con modelo_poly.fit(X_poly, Y).
- Las predicciones polinomicas (Y_pred_poly) son calculadas con
modelo_poly.predict(X_poly).
El proposito es:
- La regresión lineal múltiple, que utiliza una relación recta entre variables.
- La regresión polinómica, que permite capturar relaciones no lineales más
complejas.
Estandarización de Datos
Al trabajar con modelos de regresión, es crucial preprocesar los datos para mejorar
la precisión y estabilidad del modelo:
- La estandarización transforma los datos para que tengan media 0 y
desviación estándar 1. Se usa cuando las variables tienen diferentes
escalas, lo que puede afectar el desempeño de los modelos de aprendizaje
automático.
X_estandarizado = (X - µ)/o
Donde:
- u es la media de la variable.
- o es la desviación estándar.
Implementación en Python para Estandarización
from sklearn. preprocessing import StandardScaler
import numpy as np
X = np. array ( [ [1, 2000], [2, 3000], [3, 4000], [4, 5000], [5, 6000]])
scaler = StandardScaler ()
X scaled = scaler. fit transform (X)
_
_
print ( "Datos originales : ", X)
print ( "Datos estandarizados : ", X scaled)
_
- Crea un objeto llamado scaler, de la clase standard scaler()
- scaler.fit_transform(X) calcula las estadísticas de cada columna (media y
desviación estándar) y transforma los datos para estandarizarlos.
¿Por qué usar Ridge y Lasso?
En regresión múltiple, si hay colinealidad (variables correlacionadas entre sí), los
coeficientes pueden volverse muy grandes o inestables. Para evitarlo, usamos
técnicas de regularización como Ridge y Lasso.
Regresión Ridge
Ridge agrega una penalización L2 a la regresión, lo que evita que los coeficientes
sean muy grandes.
- La penalización L2 añade la suma de los cuadrados de los coeficientes al
error de la regresión:
- Esta reduce la magnitud de los coeficientes, pero nunca los hace
exactamente cero.
- Funciona bien cuando hay colinealidad entre variables.
from sklearn. linear model import Ridge
X = [ [1, 2], [2, 3], [3, 5], [4, 6], [5, 8]]
y = [3, 4, 6, 7, 10]
ridge model = Ridge (alpha=1)
ridge_model. fit (X, y)
print ("Coeficientes de Ridge : ", ridge_model . coef )
Regresión Lasso
Lasso agrega una penalización L1, lo que permite que algunos coeficientes se
vuelvan exactamente cero.
- La penalización L1 añade la suma de los valores absolutos de los
coeficientes
- Selecciona las variables más importantes y elimina variables irrelevantes.
from sklearn. linear model import Lasso
lasso model = Lasso (alpha=0.1)
lasso model. fit (x, y)
print ("Coeficientes de Lasso: ", lasso model . coef )
_
Comparativa de Regresión Ridge y Lasso
Característica | Regresión Ridge (L2) | Regresión Lasso (L1) |
---|
Penalización | Suma de los cuadrados de los coeficientes. | Suma de los valores absolutos de los coeficientes. |
Efecto en los coeficientes | Los reduce pero no los hace cero. | Algunos coeficientes se reducen a exactamente cero. |
Mejor uso | Cuando hay colinealidad y quieres mantener todas las variables. | Cuando quieres eliminar variables irrelevantes. |