Construcción de Regresión Lineal
Ya conoces qué es la regresión lineal simple y cómo encontrar la recta 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:
123456import 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
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 los valores objetivo a la variable y y los valores de la característica a X y construiremos un diagrama de dispersión.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrar parámetros
Para implementar la regresión lineal en Scikit-learn, se utiliza la clase LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parámetros
La clase LinearRegression tiene varios parámetros que controlan cómo se ajusta el modelo.
fit_intercept(por defecto=True): Decide si se calcula el intercepto (sesgo) para este modelo. Si se establece enFalse, no se utilizará intercepto en los cálculos (es decir, se espera que los datos estén centrados).copy_X(por defecto=True): Si esTrue, X será copiado; de lo contrario, puede ser sobrescrito.n_jobs(por defecto=None): El número de trabajos a utilizar para el cálculo. Esto solo proporcionará una aceleración para n_targets > 1 y problemas suficientemente grandes.Nonesignifica 1 a menos que esté en un contextojoblib.parallel_backend.-1significa usar todos los procesadores.positive(por defecto=False): Cuando se establece enTrue, fuerza a que los coeficientes sean positivos. Esta opción solo es compatible con arreglos densos.
Métodos comunes
fit(X, y): Ajustar el modelo lineal.predict(X): Predecir usando el modelo lineal.score(X, y): Retornar el coeficiente de determinación de la predicción.
Atributos
coef_: Coeficientes estimados para el problema de regresión lineal.intercept_: Término independiente en el modelo lineal.
En Scikit-learn, se utiliza la clase LinearRegression del módulo linear_model. A diferencia de NumPy, aquí no se define el grado; esta clase está diseñada específicamente para modelos lineales. Se utiliza el método .fit() para calcular los parámetros.
A continuación, un ejemplo:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Si no está familiarizado con la sintaxis model.intercept_ y model.coef_, esta es una convención de Scikit-learn. Los atributos que se calculan (aprenden) durante el proceso de entrenamiento siempre terminan con un guion bajo _ (por ejemplo, intercept_, coef_).
El intercept_ es un valor único, mientras que coef_ es un arreglo que contiene los coeficientes para cada característica (en la regresión lineal simple, solo tiene un elemento).
Realización de predicciones
Ahora se puede graficar la línea y predecir nuevas variables utilizando el modelo entrenado.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Ahora que se dispone del modelo entrenado, se puede utilizar el método .predict() para predecir nuevos valores.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 3.33
Construcción de Regresión Lineal
Desliza para mostrar el menú
Ya conoces qué es la regresión lineal simple y cómo encontrar la recta 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:
123456import 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
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 los valores objetivo a la variable y y los valores de la característica a X y construiremos un diagrama de dispersión.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrar parámetros
Para implementar la regresión lineal en Scikit-learn, se utiliza la clase LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parámetros
La clase LinearRegression tiene varios parámetros que controlan cómo se ajusta el modelo.
fit_intercept(por defecto=True): Decide si se calcula el intercepto (sesgo) para este modelo. Si se establece enFalse, no se utilizará intercepto en los cálculos (es decir, se espera que los datos estén centrados).copy_X(por defecto=True): Si esTrue, X será copiado; de lo contrario, puede ser sobrescrito.n_jobs(por defecto=None): El número de trabajos a utilizar para el cálculo. Esto solo proporcionará una aceleración para n_targets > 1 y problemas suficientemente grandes.Nonesignifica 1 a menos que esté en un contextojoblib.parallel_backend.-1significa usar todos los procesadores.positive(por defecto=False): Cuando se establece enTrue, fuerza a que los coeficientes sean positivos. Esta opción solo es compatible con arreglos densos.
Métodos comunes
fit(X, y): Ajustar el modelo lineal.predict(X): Predecir usando el modelo lineal.score(X, y): Retornar el coeficiente de determinación de la predicción.
Atributos
coef_: Coeficientes estimados para el problema de regresión lineal.intercept_: Término independiente en el modelo lineal.
En Scikit-learn, se utiliza la clase LinearRegression del módulo linear_model. A diferencia de NumPy, aquí no se define el grado; esta clase está diseñada específicamente para modelos lineales. Se utiliza el método .fit() para calcular los parámetros.
A continuación, un ejemplo:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Si no está familiarizado con la sintaxis model.intercept_ y model.coef_, esta es una convención de Scikit-learn. Los atributos que se calculan (aprenden) durante el proceso de entrenamiento siempre terminan con un guion bajo _ (por ejemplo, intercept_, coef_).
El intercept_ es un valor único, mientras que coef_ es un arreglo que contiene los coeficientes para cada característica (en la regresión lineal simple, solo tiene un elemento).
Realización de predicciones
Ahora se puede graficar la línea y predecir nuevas variables utilizando el modelo entrenado.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Ahora que se dispone del modelo entrenado, se puede utilizar el método .predict() para predecir nuevos valores.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!