En este módulo, exploraremos los algoritmos más comunes y fundamentales en el campo del Machine Learning. Estos algoritmos son la base para construir modelos que pueden aprender y hacer predicciones a partir de datos. A lo largo de esta sección, cubriremos los siguientes temas:
- Regresión Lineal
- Regresión Logística
- Árboles de Decisión
- Máquinas de Soporte Vectorial (SVM)
- K-Nearest Neighbors (K-NN)
- K-Means Clustering
- Redes Neuronales Básicas
- Regresión Lineal
Concepto
La regresión lineal es uno de los algoritmos más simples y utilizados en Machine Learning. Se utiliza para predecir un valor continuo basado en una o más variables independientes.
Ejemplo
Supongamos que queremos predecir el precio de una casa basado en su tamaño. La relación entre el tamaño de la casa y su precio puede ser aproximada por una línea recta.
Código
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Datos de ejemplo
X = np.array([[1500], [1600], [1700], [1800], [1900]])
y = np.array([300000, 320000, 340000, 360000, 380000])
# Crear el modelo de regresión lineal
model = LinearRegression()
model.fit(X, y)
# Predicción
predicted_price = model.predict([[2000]])
print(f"El precio predicho para una casa de 2000 sqft es: ${predicted_price[0]:,.2f}")
# Visualización
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red')
plt.xlabel('Tamaño de la casa (sqft)')
plt.ylabel('Precio ($)')
plt.title('Regresión Lineal')
plt.show()Explicación
- Importación de librerías: Usamos
numpypara manejar los datos ymatplotlibpara la visualización.sklearn.linear_modelproporciona la implementación de regresión lineal. - Datos de ejemplo:
Xrepresenta los tamaños de las casas yylos precios. - Creación y entrenamiento del modelo:
model.fit(X, y)ajusta el modelo a los datos. - Predicción:
model.predict([[2000]])predice el precio de una casa de 2000 sqft. - Visualización: Se muestra una gráfica con los datos y la línea de regresión.
- Regresión Logística
Concepto
La regresión logística se utiliza para problemas de clasificación binaria. Predice la probabilidad de que una instancia pertenezca a una clase particular.
Ejemplo
Supongamos que queremos predecir si un estudiante aprobará un examen basado en las horas de estudio.
Código
import numpy as np
from sklearn.linear_model import LogisticRegression
# Datos de ejemplo
X = np.array([[5], [10], [15], [20], [25]])
y = np.array([0, 0, 0, 1, 1]) # 0: No aprueba, 1: Aprueba
# Crear el modelo de regresión logística
model = LogisticRegression()
model.fit(X, y)
# Predicción
probability = model.predict_proba([[12]])[0][1]
print(f"La probabilidad de aprobar con 12 horas de estudio es: {probability:.2f}")
# Clasificación
prediction = model.predict([[12]])
print(f"El estudiante {'aprobará' if prediction[0] == 1 else 'no aprobará'} con 12 horas de estudio.")Explicación
- Importación de librerías:
sklearn.linear_modelproporciona la implementación de regresión logística. - Datos de ejemplo:
Xrepresenta las horas de estudio yysi el estudiante aprueba (1) o no (0). - Creación y entrenamiento del modelo:
model.fit(X, y)ajusta el modelo a los datos. - Predicción de probabilidad:
model.predict_proba([[12]])predice la probabilidad de aprobar con 12 horas de estudio. - Clasificación:
model.predict([[12]])predice si el estudiante aprobará o no.
- Árboles de Decisión
Concepto
Los árboles de decisión son modelos de predicción que dividen los datos en subconjuntos basados en características y umbrales específicos, formando una estructura de árbol.
Ejemplo
Supongamos que queremos predecir si un cliente comprará un producto basado en su edad y salario.
Código
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn import tree
# Datos de ejemplo
X = np.array([[25, 50000], [35, 60000], [45, 80000], [20, 20000], [30, 40000]])
y = np.array([1, 1, 1, 0, 0]) # 1: Compra, 0: No compra
# Crear el modelo de árbol de decisión
model = DecisionTreeClassifier()
model.fit(X, y)
# Predicción
prediction = model.predict([[40, 70000]])
print(f"El cliente {'comprará' if prediction[0] == 1 else 'no comprará'} el producto.")
# Visualización del árbol
plt.figure(figsize=(12,8))
tree.plot_tree(model, feature_names=['Edad', 'Salario'], class_names=['No compra', 'Compra'], filled=True)
plt.show()Explicación
- Importación de librerías:
sklearn.treeproporciona la implementación de árboles de decisión. - Datos de ejemplo:
Xrepresenta las características (edad y salario) yysi el cliente compra (1) o no (0). - Creación y entrenamiento del modelo:
model.fit(X, y)ajusta el modelo a los datos. - Predicción:
model.predict([[40, 70000]])predice si un cliente de 40 años con un salario de 70000 comprará el producto. - Visualización: Se muestra el árbol de decisión.
- Máquinas de Soporte Vectorial (SVM)
Concepto
Las SVM son algoritmos de clasificación que buscan el hiperplano que mejor separa las clases en el espacio de características.
Ejemplo
Supongamos que queremos clasificar puntos en un plano 2D.
Código
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as plt
# Datos de ejemplo
X, y = datasets.make_blobs(n_samples=100, centers=2, random_state=6)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Crear el modelo SVM
model = SVC(kernel='linear')
model.fit(X_train, y_train)
# Predicción
accuracy = model.score(X_test, y_test)
print(f"La precisión del modelo SVM es: {accuracy:.2f}")
# Visualización
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='winter')
plt.title('Clasificación con SVM')
plt.show()Explicación
- Importación de librerías:
sklearn.svmproporciona la implementación de SVM. - Datos de ejemplo:
datasets.make_blobsgenera datos de ejemplo para clasificación. - Creación y entrenamiento del modelo:
model.fit(X_train, y_train)ajusta el modelo a los datos de entrenamiento. - Predicción:
model.score(X_test, y_test)evalúa la precisión del modelo en los datos de prueba. - Visualización: Se muestra la clasificación de los puntos en el plano 2D.
- K-Nearest Neighbors (K-NN)
Concepto
K-NN es un algoritmo de clasificación que asigna una clase a una instancia basada en las clases de sus k vecinos más cercanos.
Ejemplo
Supongamos que queremos clasificar flores basado en sus características.
Código
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# Datos de ejemplo
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Crear el modelo K-NN
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
# Predicción
accuracy = model.score(X_test, y_test)
print(f"La precisión del modelo K-NN es: {accuracy:.2f}")Explicación
- Importación de librerías:
sklearn.neighborsproporciona la implementación de K-NN. - Datos de ejemplo:
load_iriscarga el conjunto de datos de iris. - Creación y entrenamiento del modelo:
model.fit(X_train, y_train)ajusta el modelo a los datos de entrenamiento. - Predicción:
model.score(X_test, y_test)evalúa la precisión del modelo en los datos de prueba.
- K-Means Clustering
Concepto
K-Means es un algoritmo de clustering que agrupa datos en k clusters basados en sus características.
Ejemplo
Supongamos que queremos agrupar clientes basado en sus patrones de compra.
Código
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Datos de ejemplo
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
# Crear el modelo K-Means
model = KMeans(n_clusters=2)
model.fit(X)
# Predicción
labels = model.predict(X)
print(f"Etiquetas de los clusters: {labels}")
# Visualización
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1], s=300, c='red')
plt.title('Clustering con K-Means')
plt.show()Explicación
- Importación de librerías:
sklearn.clusterproporciona la implementación de K-Means. - Datos de ejemplo:
Xrepresenta las características de los clientes. - Creación y entrenamiento del modelo:
model.fit(X)ajusta el modelo a los datos. - Predicción:
model.predict(X)asigna etiquetas de clusters a los datos. - Visualización: Se muestra la agrupación de los datos y los centros de los clusters.
- Redes Neuronales Básicas
Concepto
Las redes neuronales son modelos inspirados en el cerebro humano, compuestos por capas de neuronas que procesan información.
Ejemplo
Supongamos que queremos clasificar dígitos escritos a mano.
Código
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
# Datos de ejemplo
digits = load_digits()
X = digits.data
y = digits.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Crear el modelo de red neuronal
model = MLPClassifier(hidden_layer_sizes=(100,), max_iter=300, solver='adam', random_state=42)
model.fit(X_train, y_train)
# Predicción
accuracy = model.score(X_test, y_test)
print(f"La precisión del modelo de red neuronal es: {accuracy:.2f}")Explicación
- Importación de librerías:
sklearn.neural_networkproporciona la implementación de redes neuronales. - Datos de ejemplo:
load_digitscarga el conjunto de datos de dígitos escritos a mano. - Creación y entrenamiento del modelo:
model.fit(X_train, y_train)ajusta el modelo a los datos de entrenamiento. - Predicción:
model.score(X_test, y_test)evalúa la precisión del modelo en los datos de prueba.
Conclusión
En esta sección, hemos cubierto algunos de los algoritmos más importantes en Machine Learning, incluyendo regresión lineal, regresión logística, árboles de decisión, SVM, K-NN, K-Means y redes neuronales básicas. Cada uno de estos algoritmos tiene sus propias fortalezas y debilidades, y la elección del algoritmo adecuado depende del problema específico que se esté abordando.
Resumen
- Regresión Lineal: Predicción de valores continuos.
- Regresión Logística: Clasificación binaria.
- Árboles de Decisión: Clasificación y regresión mediante una estructura de árbol.
- SVM: Clasificación mediante la búsqueda del hiperplano óptimo.
- K-NN: Clasificación basada en la proximidad de los vecinos.
- K-Means: Agrupación de datos en clusters.
- Redes Neuronales: Modelos inspirados en el cerebro humano para clasificación y regresión.
Preparación para el siguiente tema
En el próximo módulo, profundizaremos en la evaluación y validación de modelos de Machine Learning, lo cual es crucial para asegurar que nuestros modelos funcionen correctamente y generalicen bien a nuevos datos.
Fundamentos de Inteligencia Artificial (IA)
Módulo 1: Introducción a la Inteligencia Artificial
Módulo 2: Principios Básicos de la IA
Módulo 3: Algoritmos en IA
Módulo 4: Aprendizaje Automático (Machine Learning)
- Conceptos Básicos de Machine Learning
- Tipos de Aprendizaje Automático
- Algoritmos de Machine Learning
- Evaluación y Validación de Modelos
Módulo 5: Redes Neuronales y Deep Learning
- Introducción a las Redes Neuronales
- Arquitectura de Redes Neuronales
- Deep Learning y sus Aplicaciones
