MACHINE LEARNING
- YHOMIRA FERNANDA SIANCAS OLIVOS
- 2 dic 2023
- 4 Min. de lectura

En la era digital actual, el aprendizaje automático ha surgido como una de las tecnologías más revolucionarias, transformando la forma en que las máquinas aprenden y se adaptan a través de la experiencia. Este campo de la inteligencia artificial ha desencadenado avances significativos en una amplia gama de industrias, desde la medicina hasta las finanzas, y ha promovido un cambio fundamental en la forma en que las empresas abordan la toma de decisiones y la automatización de procesos.
El machine learning se basa en el desarrollo de algoritmos y modelos computacionales que permiten a las máquinas aprender patrones a partir de datos y tomar decisiones sin intervención humana directa. A través del análisis de grandes conjuntos de datos, las máquinas pueden identificar correlaciones, tendencias y patrones que a menudo escapan a la percepción humana, lo que les permite realizar predicciones precisas y tomar decisiones informadas.
En resumen, losalgoritmos de Machine Learningaprenden de forma autónoma a realizar una tarea o hacer predicciones a partir de datos y mejorar su rendimiento con el tiempo. Una vez entrenado, el algoritmo podrá encontrar los patrones en nuevos datos.
principales algoritmos de Machine Learning:
Los algoritmos de regresión, lineal o logística, permiten comprender las relaciones entre los datos. La regresión lineal se utiliza para predecir el valor de una variable dependiente en función del valor de una variable independiente. Sería por ejemplo, para predecir las ventas anuales de un comercial en función de su nivel de estudios o de experiencia. La regresión logística a su vez se utiliza cuando las variables dependientes son binarias. Otro tipo de algoritmo de regresión llamado máquina de vectores de soporte es pertinente cuando las variables dependientes son más difíciles de clasificar.

El árbol de decisiones. Ese algoritmo permite establecer recomendaciones basadas en un conjunto de reglas de decisión partiendo de datos clasificados. Por ejemplo, es posible recomendar por qué equipo de fútbol apostar basándose en datos como la edad de los jugadores o el porcentaje de victorias del equipo.

Los algoritmos de asociación permiten descubrir patrones y relaciones en los datos, e identificar las relaciones “si/entonces”, llamadas “reglas de asociación». Esas reglas son similares a las que se utilizan en el campo del Data Mining o minería de datos.

Las redes neuronales son algoritmos en forma de red con varias capas. La primera permite la captación de datos, una o más capas escondidas permiten sacar conclusiones de los datos captados y la última capa asigna una probabilidad a cada conclusión.

Una red de neuronas “profunda” está compuesta por múltiples capas ocultas que permiten afinar los resultados de la anterior. Es la que se utiliza en el campo del Deep Learning.
CÓDIGO DE BOSQUES ALEATORIOS EN BASE A ÁRBOLES DE DESICIONES:
import pandas as pd from google.colab import files uploaded=files.upload()
personas = pd.read_csv("ingresos.csv") print(personas.sample(frac=2/3, replace=True)) print(personas.sample(frac=2/3, replace=True)) print(personas.sample(frac=2/3, replace=True)) print(personas.sample(frac=2/3, replace=True)) print(personas.sample(frac=2/3, replace=True))
from random import sample print(personas.columns[:-1], "\n") print(sample(set(personas.columns[:-1]), 3))
import matplotlib.pyplot as plt from sklearn import tree for arbol in bosque.estimators_: tree.plot_tree(arbol, feature_names=personas.columns[:-1]) plt.show()
RESULTADO OBTENIDO DEL COLAB:

CÓDIGO EJEMPLO DE REGRESIÓN LOGÍSTICA:
import numpy as np
import matplotlib.pyplot as plt
import math
# Creamos una función logística vectorial (ufuncs)
logistica = np.frompyfunc(lambda b0, b1, x:
1 / (1 + math.exp(-(b0 + b1*x))),
3, 1)
# Graficamos la función logística
plt.figure(figsize=(8, 4))
# Diferentes pendientes
plt.scatter(np.arange(-5, 5, 0.1),
logistica(0, 1, np.arange(-5, 5, 0.1)),
color="green")
plt.scatter(np.arange(-5, 5, 0.1),
logistica(0, 2, np.arange(-5, 5, 0.1)),
color="gold")
plt.scatter(np.arange(-5, 5, 0.1),
logistica(0, 3, np.arange(-5, 5, 0.1)),
color="red")
plt.title("Función Logística Estándar - Diferentes 'Pendientes'", fontsize=14.0)
plt.ylabel("Probabilidad", fontsize=13.0)
plt.xlabel("Valores", fontsize=13.0)
plt.show()
# Persona Normal de 60 a 100 latidos por minuto.
# Persona con Taquicardia de hasta 220 latidos por minuto.
personas_normal = [65, 70, 80, 80, 80,
90, 95, 100, 105, 110]
personas_taquicardia = [105, 110, 110, 120, 120,
130, 140, 180, 185, 190]
# Graficamos una función logística
plt.figure(figsize=(6, 4))
# y = b0 + b1x
# y = -46.68057196 + 0.42460226x
plt.scatter(np.arange(60, 200, 0.1),
logistica(-46.68057196, 0.42460226,
np.arange(60, 200, 0.1)))
# Graficamos la frecuencia cardíaca de las personas
plt.scatter(personas_normal, [0]*10,
marker="o", c="green", s=250, label="Normal")
plt.scatter(personas_taquicardia, [1]*10,
marker="o", c="red", s=250, label="Taquicardia")
# Graficamos las probabilidades para tres (3) individuos
individuos = [80, 110, 180]
probalidades = logistica(-46.68057196, 0.42460226, individuos)
plt.scatter(individuos, probalidades,
marker="*", c="darkorange", s=500)
plt.text(individuos[0]+7, 0.05, "%0.2f" % probalidades[0],
size=12, color="black")
plt.text(individuos[1]+7, 0.48, "%0.2f" % probalidades[1],
size=12, color="black")
plt.text(individuos[2]+7, 0.90, "%0.2f" % probalidades[2],
size=12, color="black")
plt.text(0, 1, "TAQUICARDIA", size=12, color="red")
plt.text(0, 0, "NORMAL", size=12, color="red")
plt.ylabel("Probabilidad de Taquicardia", fontsize=13.0)
plt.xlabel("Frecuencia cardíaca (latidos por minuto)", fontsize=13.0)
plt.legend(bbox_to_anchor=(1, 0.2))
plt.show()
# Diferentes funciones logísticas con diferentes "pendientes"
plt.figure(figsize=(6, 4))
for b1 in np.arange(0.35, 0.49, 0.025):
plt.scatter(np.arange(60, 200, 0.1),
logistica(-46.68057196,
b1,
np.arange(60, 200, 0.1)),
label="b_1=%0.2f" % b1)
# Graficamos la frecuencia cardíaca de las personas
plt.scatter(personas_normal, [0]*10,
marker="o", c="green", s=250, label="Normal")
plt.scatter(personas_taquicardia, [1]*10,
marker="o", c="red", s=250, label="Taquicardia")
plt.title("Máxima Verosimilitud", fontsize=18.0)
plt.text(0, 1, "TAQUICARDIA", size=12, color="red")
plt.text(0, 0, "NORMAL", size=12, color="red")
plt.ylabel("Probabilidad de Taquicardia", fontsize=13.0)
plt.xlabel("Frecuencia cardíaca (latidos por minuto)", fontsize=13.0)
plt.legend(bbox_to_anchor=(1, 1))
plt.show()
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
frecuencias_cardiacas = [[65], [70], [80], [80], [80],
[90], [95], [100], [105], [110],
[105], [110], [110], [120], [120],
[130], [140], [180], [185], [190]]
clase = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# Creamos conjuntos de entrenamiento y de prueba del modelo
datos_entrena, datos_prueba, clase_entrena, clase_prueba = \
train_test_split(frecuencias_cardiacas,
clase,
test_size=0.30)
# Creamos el modelo de Regresión Logística
modelo = LogisticRegression().fit(datos_entrena, clase_entrena)
np.set_printoptions(suppress=True)
print(modelo.predict(datos_prueba))
print(modelo.predict_proba(datos_prueba))
print(modelo.score(datos_prueba, clase_prueba))
print(modelo.intercept_, modelo.coef_)
RESULTADOS OBTENIDOS:


Comentarios