Algoritmos de Machine Learning en Python: Guía Completa con Ejemplos [2025]

Introducción

Python se ha consolidado como el lenguaje dominante para implementar algoritmos de machine learning, gracias a su simplicidad y robusto ecosistema de bibliotecas. En esta guía, exploraremos los principales algoritmos desde los más fundamentales hasta los más avanzados, con ejemplos prácticos de implementación.

Configuración del entorno Python para machine learning

Para comenzar, necesitarás configurar tu entorno de desarrollo:

python
# Instalación con pip pip install numpy pandas matplotlib scikit-learn jupyter # O con Anaconda conda create -n ml-env python=3.9 conda activate ml-env conda install numpy pandas matplotlib scikit-learn conda install -c conda-forge jupyter

Las bibliotecas fundamentales incluyen NumPy (operaciones numéricas), Pandas (manipulación de datos), Scikit-learn (algoritmos ML), Matplotlib/Seaborn (visualización) y Jupyter (entorno interactivo).

Algoritmos de aprendizaje supervisado

Regresión Lineal y Polinomial

La regresión lineal modela relaciones lineales entre variables:

python
from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline import make_pipeline # Regresión lineal model = LinearRegression() model.fit(X_train, y_train) # Regresión polinomial poly_model = make_pipeline(PolynomialFeatures(degree=3), LinearRegression()) poly_model.fit(X_train, y_train)

Casos de uso: Predicción de precios inmobiliarios, pronóstico de ventas, análisis económico.

Regresión Logística

A pesar de su nombre, es un algoritmo de clasificación:

python
from sklearn.linear_model import LogisticRegression logreg = LogisticRegression(solver='lbfgs', max_iter=1000) logreg.fit(X_train, y_train)

Casos de uso: Clasificación binaria (spam/no spam), modelos de riesgo crediticio, diagnóstico médico.

Árboles de Decisión y Random Forest

Modelos basados en reglas de decisión:

python
from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier # Árbol de decisión dt_classifier = DecisionTreeClassifier(max_depth=3) dt_classifier.fit(X_train, y_train) # Random Forest rf_classifier = RandomForestClassifier(n_estimators=100) rf_classifier.fit(X_train, y_train)

Casos de uso: Sistemas de diagnóstico, análisis de riesgo, clasificación de imágenes.

Support Vector Machines (SVM)

Algoritmo potente que busca el hiperplano óptimo para separar clases:

python
from sklearn.svm import SVC svm = SVC(kernel='rbf', C=1, gamma='scale') svm.fit(X_train_scaled, y_train)

Casos de uso: Clasificación de texto, reconocimiento de imágenes, bioinformática.

K-Nearest Neighbors (KNN)

Clasificación basada en la similitud entre instancias:

python
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=5) knn.fit(X_train_scaled, y_train)

Casos de uso: Sistemas de recomendación, clasificación de imágenes simples, aplicaciones médicas.

Algoritmos de aprendizaje no supervisado

K-Means Clustering

Divide los datos en k clusters basados en similitud:

python
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=4, random_state=42) cluster_labels = kmeans.fit_predict(X_scaled)

Casos de uso: Segmentación de clientes, agrupación de documentos, compresión de imágenes.

Principal Component Analysis (PCA)

Reduce la dimensionalidad manteniendo la máxima varianza:

python
from sklearn.decomposition import PCA pca = PCA(n_components=2) X_pca = pca.fit_transform(X_scaled)

Casos de uso: Visualización de datos multidimensionales, reducción de ruido, preprocesamiento.

Redes neuronales y deep learning

Perceptrón multicapa (MLP)

Red neuronal básica con una o más capas ocultas:

python
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential([ Dense(16, activation='relu', input_shape=(n_features,)), Dense(8, activation='relu'), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)

Redes neuronales convolucionales (CNN)

Especializadas para procesamiento de imágenes:

python
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model_cnn = Sequential([ Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)), MaxPooling2D(pool_size=(2, 2)), Conv2D(64, kernel_size=(3, 3), activation='relu'), MaxPooling2D(pool_size=(2, 2)), Flatten(), Dense(128, activation='relu'), Dense(10, activation='softmax') ])

Algoritmos de ensamble

Bagging y Random Forest

python
from sklearn.ensemble import BaggingClassifier, RandomForestClassifier bagging_clf = BaggingClassifier( base_estimator=DecisionTreeClassifier(), n_estimators=100, max_samples=0.8, bootstrap=True ) rf_clf = RandomForestClassifier(n_estimators=100, max_features="sqrt")

Boosting (XGBoost, LightGBM)

python
import xgboost as xgb xgb_clf = xgb.XGBClassifier( n_estimators=100, learning_rate=0.1, max_depth=4 )

Selección del algoritmo adecuado

Al elegir un algoritmo, considera estos factores:

  1. Tipo de problema: Clasificación, regresión, clustering, etc.
  2. Características de los datos: Volumen, dimensionalidad, estructura
  3. Requisitos de rendimiento: Precisión, interpretabilidad, velocidad

Guía rápida de selección:

ProblemaAlgoritmos recomendados
Clasificación con datos linealesRegresión Logística, SVM lineal
Clasificación con datos complejosRandom Forest, XGBoost, Redes Neuronales
Regresión simpleRegresión Lineal, Ridge, Lasso
Regresión complejaRandom Forest, Gradient Boosting, Redes Neuronales
ClusteringK-Means, DBSCAN, Clustering Jerárquico
Reducción de dimensionalidadPCA, t-SNE
Procesamiento de imágenesCNN
Procesamiento de secuenciasRNN, LSTM, Transformers

Optimización de hiperparámetros

Optimiza los hiperparámetros de tus modelos con:

python
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV # Grid Search grid_search = GridSearchCV( estimator, param_grid, cv=5, scoring='accuracy' ) # Random Search random_search = RandomizedSearchCV( estimator, param_distributions, n_iter=20, cv=5 )

Evaluación de modelos

Para clasificación:

  • Accuracy, Precision, Recall, F1-score
  • Matriz de confusión
  • Curvas ROC y Precision-Recall

Para regresión:

  • MAE, MSE, RMSE
  • R² (coeficiente de determinación)

Conclusión

La elección del algoritmo adecuado depende del problema específico, las características de tus datos y los requisitos de tu aplicación. Comienza con modelos simples como línea base y avanza hacia algoritmos más complejos según sea necesario. Recuerda que el machine learning es tanto ciencia como arte: combina el conocimiento técnico con experimentación para obtener los mejores resultados.

Leave a Comment

Your email address will not be published. Required fields are marked *