Contenido del Curso
Regresión Lineal con Python
Regresión Lineal con Python
Construcción de Regresión Lineal Utilizando NumPy
Ya sabes qué es la regresión lineal simple y cómo encontrar la línea que mejor se ajusta a los datos. Ahora, recorrerás todos los pasos para construir una regresión lineal utilizando un conjunto de datos real.
Carga de datos
Disponemos de un archivo, simple_height_data.csv
, con los datos de nuestros ejemplos. Cargaremos el archivo y lo revisaremos:
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
Así que el conjunto de datos tiene dos columnas: la primera es 'Father'
, que es la característica de entrada, y la segunda es 'Height'
, que es nuestra variable objetivo.
Asignaremos nuestros valores objetivo a la variable y
y los valores de la característica a X
y construiremos un diagrama de dispersión.
import pandas as pd import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrar los parámetros
Ahora, NumPy tiene una función útil para encontrar los parámetros de la regresión lineal.
La regresión lineal es una regresión polinómica de grado 1 (hablaremos de la regresión polinómica en secciones posteriores). Por eso necesitamos establecer deg=1
para obtener los parámetros de la regresión lineal.
Aquí tienes un ejemplo:
import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the files X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Si no estás familiarizado con la sintaxis beta_1, beta_0 = np.polyfit(X,y,1)
, esto se llama desempaquetado. Si tienes un iterador (por ejemplo, una lista, un array de NumPy o una serie de pandas) que contiene dos elementos, escribir
a, b = my_iterator
es lo mismo que
a = my_iterator[0]
b = my_iterator[1]
Y como el retorno de la función polyfit()
es un array de NumPy con dos valores, se permite hacer esto.
Realización de las predicciones
Ahora podemos graficar la recta y predecir nuevas variables utilizando los parámetros.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters plt.scatter(X,y) # Build a scatter plot plt.plot(X, beta_0 + beta_1 * X, color='red') # Plot the line plt.show()
Ahora que tenemos los parámetros, podemos utilizar la ecuación de regresión lineal para predecir nuevos valores.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters X_new = np.array([65, 70, 75]) # Feature values of new instances y_pred = beta_0 + beta_1 * X_new # Predict the target print('Predicted y: ', y_pred)
Por lo tanto, es bastante sencillo obtener los parámetros de la regresión lineal. Sin embargo, algunas bibliotecas también pueden proporcionar información adicional.
¡Gracias por tus comentarios!