Ticker

6/recent/ticker-posts

Desarrolla un Modelo de Regresión Lineal con Python

Para emprender este tutorial práctico con relacion a la elaboración o desarrolla de un modelo Machine Learning de Regresión Lineal con Python, mencionar que no se pretenden profundizar conceptos en relacion a Machine Learning (ML), aprendizaje supervisado, regresión lineal u otros.


Requisitos:

  • Python 3.10.
  • Librerías: NumPy, Matplotlib.
  • IDE - Visual Studio Code.
  • GUI - Anaconda Navigator.
  • Jupyter Notebooks.

Lo que se vera en este tutorial:

  1. Consideraciones y conceptos básicos.
  2. Notaciones relavantes para el desarrollo del modelo.
  3. Desarrollo del modelo ML de Regresión Lineal.
  4. Conclusiones y Referencias.

① Consideraciones y conceptos básicos:

1.1. Aprendizaje supervisado y no supervisado:

Los métodos que implican el aprendizaje a partir de datos se pueden dividir en dos categorías principales: aprendizaje supervisado (a donde pertenece regresión lineal) y aprendizaje no supervisado. En el aprendizaje supervisado, se puede entrenar un modelo utilizando datos que están etiquetados, lo que significa que los datos tienen variables objetivo (precio del inmueble en este tutorial). 

1.2. Variable:

La variable objetivo juega un papel clave al permitir que el algoritmo de aprendizaje supervisado predice los objetivos correctos para los datos procesados. Los algoritmos típicos para el aprendizaje supervisado incluyen modelos lineales teniendo en cuenta como el análisis de regresión lineal basado en máquinas de vectores de soporte (SVM - Support vector machine) o inclusive procesamiento en redes neuronales convulsionales (CN - Convolutional Neural Networks).

1.3. ¿Qué es regresión lineal?

La regresión lineal es la técnica de análisis de datos, la regresión lineal realiza la tarea de predecir una variable dependiente (objetivo) en función de las variables independientes dadas. Entonces, esta técnica de regresión encuentra una relación lineal entre una variable dependiente y las otras variables independientes dadas. Por lo tanto, el nombre de este algoritmo es Regresión lineal.

1.4. Representación Grafica de regresión Lienal.

En el eje “X” está la variable independiente y en el eje “Y” está la salida. La línea de regresión es la línea que mejor se ajusta a un modelo. “Y” nuestro principal objetivo en este algoritmo es encontrar la línea que mejor se ajuste.



1.5. ¿Qué es Dataset?

Los Dataset en Machine Learning son conjuntos de datos históricos que sirven de base para entrenar un algoritmo con el objetivo de que una máquina pueda tomar decisiones; decisiones que serán tomadas de los datos con relación al Dataset.

1.6. ¿Qué son los Jupyter Notebooks?

Los Jupyter Notebooks o Cuadernos Jupyter son una popular herramienta de ciencia de datos que permite a los científicos de datos escribir código, ver los resultados y describir lo que sucede, todo en un solo documento.

Pueder aprender a usar Jupyter Notebooks desde cero en el tutorial acerca de Jupyter Notebooks con Anaconda Navigator y Visual Studio Code.

② Notaciones relavantes para el desarrollo del modelo:



③ Desarrollo del modelo ML de Regresión Lineal:


El desarrollo del modelo de Machine Learning es aplicar conceptos con relación al algortimo supervisado de regresión lineal, se pretende predecir los precios de los inmuebles según su tamaño; teniendo en consideración las siguientes etiquetas “X” = tamaño en m^2 y “Y” = precio en $ 1000's.

 

3.1. Importar  librerias:

import numpy as np
import matplotlib.pyplot as plt
from utils import *
plt.style.use('./deeplearning.mplstyle')
np.set_printoptions(precision=2)

NumPy: Librería de Python orientado al cálculo numérico y el análisis de datos, especialmente para trabajar con gran volumen de datos; contiene clases para manipulación de objetos como arrays que permite representar colecciones de datos de un mismo tipo en varias dimensiones, y funciones muy eficientes para su manipulación.

Matplotlib: Librería de Python especializada en la creación de gráficos en dos dimensiones, los tipos de gráficos soportados y más comunes como: Diagramas de barras, Histograma, Diagramas de sectores, Diagramas de caja y bigotes, Diagramas de violín, Diagramas de dispersión o puntos, Diagramas de lineas, Diagramas de areas, Diagramas de contorno y Mapas de color

El import de utils (from utils import *) es con relación al archivo Python utils.py que cuenta con la función para carga los datos de entreamiento (load_data()):

import numpy as np

def load_data():
    data = np.loadtxt("data/dataset.txt", delimiter=',')    
    X = data[:,0]
    y = data[:,1]
    return X, y


3.2. Variables de entrenamiento y dataset inicial:

x_train, y_train = load_data()
print(f"x_train = {x_train}")
print(f"y_train = {y_train}")

Etiquetas x (tamaña) y (precio)


Captura el número de datos iniciales para el entrenamiento:

m = len(x_train)
print(f"Numbero de entrenamiento: {m}")


Nuestro dataset inicial es de 100 registros en base a las equitetas “X” = tamaño en m^2 y “Y” = precio en $ 1000's


3.3. Aplicar entrenamiento (aun no es un entrenamiento final):

i = 0
x_i = x_train[i]
y_i = y_train[i]
print(f"(x^({i}), y^({i})) = ({x_i}, {y_i})")


3.4. Trazar los datos:

# Plot the data points
plt.scatter(x_train, y_train, marker='o', c='r')
# Set the title
plt.title("Precios de Inmuebles")
# Set the y-axis label
plt.ylabel('Precio (en 1000s de dólares)')
# Set the x-axis label
plt.xlabel('Tamaño (m^2)')
plt.show()


Puntos dispersos segun la traza de datos



3.5. Asignar valor al párametro (w) de predicción y asignar filtro incial al parametro (b) de predicción:

w = 1200
b = 300
print(f"w: {w}")
print(f"b: {b}")


3.6. Implementar la función para calcular la salida de los datos procesados:

def compute_model_output(x, w, b):    
    m = x.shape[0]
    f_wb = np.zeros(m)
    for i in range(m):
        f_wb[i] = w * x[i] + b
       
    return f_wb


3.7. Trazar la salida de predicción:

tmp_f_wb = compute_model_output(x_train, w, b,)

plt.plot(x_train, tmp_f_wb, c='b',label='Nuestra prediccion')
plt.scatter(x_train, y_train, marker='o', c='r',label='Valores Actuales')

plt.title("Predicción de Pricios de inmuebles")
plt.ylabel('Precio (en 1000s de dólares)')
plt.xlabel('Tamaño (m^2)')
plt.legend()
plt.show()


Puntos dispersos segun la traza de datos + la aproximación inicial de nuestra predicción


3.8. Aplicar una predicción:

def price_model_output(m_2):    
    x_i = m_2 #round(mts_pies(m_2)/ 1000,3)    
    cost_in_mt2 = w * x_i + b        
    return f"Inmueble valorizado en $ {format(cost_in_mt2, '0,.2f')}, con un tamaño de {m_2:.0f} m^2"

price_model_output(90)


Predicción con un tamaño de 90 m^2


④ Conclusiones y Referencias:

Conclusiones:

  • En este tutorial especificamos los requisitos, consideraciones y conceptos básicos básicos en relación al Modelo de Regresión Lineal.
  • Se desarrolla el Modelo de Regresión Lineal aplicando los conceptos con relación a la implementación de Machine Learning en base a la categoría del aprendizaje supervisado y algoritmo de regresión lineal según la variable objetivo y establecido de tipo numérico.

Referencias:





Comentarios y apreciaciones son bienvenido, un fuerte abrazo a todos ✌...!
Gratitud a Dios hoy y siempre 😊...!!

Publicar un comentario

0 Comentarios