Ejemplos de regresión no lineal – ML

La regresión no lineal es un tipo de regresión polinomial. Es un método para modelar una relación no lineal entre las variables dependientes e independientes. Se usa cuando los datos muestran una tendencia con curvas y la regresión lineal no produciría resultados muy precisos en comparación con la regresión no lineal. Esto se debe a que en la regresión lineal se asume previamente que los datos son lineales. 

Código: 

Python3

import numpy as np
import pandas as pd
 
# downloading dataset
! wget -nv -O china_gdp.csv https://s3-api.us-geo.objectstorage.softlayer.net/
                    cf-courses-data/CognitiveClass/ML0101ENv3/labs/china_gdp.csv
     
df = pd.read_csv("china_gdp.csv")
 
def sigmoid(x, Beta_1, Beta_2):
     y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))
     return y
     
beta_1 = 0.10
beta_2 = 1990.0
 
# logistic function
Y_pred = sigmoid(x_data, beta_1, beta_2)
 
# plot initial prediction against datapoints
plt.plot(x_data, Y_pred * 15000000000000.)
plt.plot(x_data, y_data, 'ro')   

El diagrama de dispersión muestra la relación entre el PIB y el tiempo de un país, pero la relación no es lineal. En cambio, después de 2005, la línea comienza a convertirse en curva y no sigue un camino recto lineal. En tales casos, se requiere un método de estimación especial llamado regresión no lineal. 

Código: 

Python3

import numpy as np
import pandas as pd
 
# downloading dataset
! wget -nv -O china_gdp.csv https://s3-api.us-geo.objectstorage.softlayer.net/
         cf-courses-data / CognitiveClass / ML0101ENv3 / labs / china_gdp.csv
     
df = pd.read_csv("china_gdp.csv")
 
def sigmoid(x, Beta_1, Beta_2):
     y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))
     return y
      
x = np.linspace(1960, 2015, 55)
x = x / max(x)
y = sigmoid(x, *popt)
 
plt.figure(figsize =(8, 5))
plt.plot(xdata, ydata, 'ro', label ='data')
plt.plot(x, y, linewidth = 3.0, label ='fit')
plt.legend(loc ='best')
plt.ylabel('GDP')
plt.xlabel('Year')
plt.show()

Producción: 
 

Hay muchas regresiones diferentes que existen y se pueden usar para adaptarse a cualquier aspecto del conjunto de datos, como regresión cuadrática, cúbica, etc. en grados infinitos de acuerdo con nuestros requisitos. 

Código: 

Python3

import numpy as np
import matplotlib.pyplot as plt % matplotlib inline
 
x = np.arange(-5.0, 5.0, 0.1)
 
## You can adjust the slope and intercept to verify the changes in the graph
y = 2*(x) + 3
y_noise = 2 * np.random.normal(size = x.size)
ydata = y + y_noise
# plt.figure(figsize =(8, 6))
plt.plot(x, ydata,  'bo')
plt.plot(x, y, 'r')
plt.ylabel('Dependent Variable')
plt.xlabel('Independent Variable')
plt.show()

Producción: 
 

regresión lineal

Código: 

Python3

import numpy as np
import matplotlib.pyplot as plt % matplotlib inline
 
x = np.arange(-5.0, 5.0, 0.1)
 
## You can adjust the slope and intercept to verify the changes in the graph
 
y = np.power(x, 2)
y_noise = 2 * np.random.normal(size = x.size)
ydata = y + y_noise
plt.plot(x, ydata,  'bo')
plt.plot(x, y, 'r')
plt.ylabel('Dependent Variable')
plt.xlabel('Independent Variable')
plt.show()

Producción: 

Regresión cuadrática

Código: 

Python3

import numpy as np
import matplotlib.pyplot as plt % matplotlib inline
 
x = np.arange(-5.0, 5.0, 0.1)
 
## You can adjust the slope and intercept to verify the changes in the graph
y = 1*(x**3) + 1*(x**2) + 1 * x + 3
y_noise = 20 * np.random.normal(size = x.size)
ydata = y + y_noise
plt.plot(x, ydata,  'bo')
plt.plot(x, y, 'r')
plt.ylabel('Dependent Variable')
plt.xlabel('Independent Variable')
plt.show()

Producción: 

regresión cúbica

Podemos llamar a todas estas regresiones polinómicas, donde la relación entre la variable independiente X y la variable dependiente Y se modela como un polinomio de grado N en X. 
 

Regresión polinomial

Para que un modelo se considere no lineal, Y debe ser una función no lineal de los parámetros Theta, no necesariamente las características X. Cuando se trata de una ecuación no lineal, puede tener la forma de exponencial, logarítmica y logística, o de muchos otros tipos. 

Producción: 

Ecuaciones de regresión no lineal

Como puede ver en todas estas ecuaciones, el cambio de Y hat depende de los cambios en los parámetros Theta, no necesariamente solo en X. Es decir, en la regresión no lineal, un modelo no es lineal por parámetros. 
 

Publicación traducida automáticamente

Artículo escrito por hitainkakkar007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *