Scikit‑learn

Scikit‑learn es una biblioteca de código abierto para Python que proporciona herramientas sencillas y eficientes para el aprendizaje automático clásico, incluyendo algoritmos de clasificación, regresión, clustering y reducción de dimensionalidad. Está diseñada para interoperar de forma fluida con las bibliotecas numéricas y científicas NumPy y SciPy, y se integra fácilmente con Pandas para la manipulación de datos.

El API de scikit‑learn es coherente y bien documentado: cada estimador sigue el patrón fit(X, y) para el entrenamiento y predict(X) (o transform(X)) para la inferencia, lo que permite cambiar de un algoritmo a otro con mínima modificación del código. Esta uniformidad facilita la construcción de pipelines reutilizables que encadenan preprocesamiento, selección de características y modelado en un solo objeto.

Los algoritmos disponibles abarcan una amplia gama de técnicas supervisadas y no supervisadas:

  • Clasificación: regresión logística, máquinas de vectores de soporte (SVC), bosques aleatorios, k‑vecinos más cercanos, boosting de gradiente y redes neuronales multicapa.wikipedia+1
  • Regresión: regresión lineal, ridge, lasso, elasticnet, árboles de decisión y bosques aleatorios para valores continuos.elcursodeia+1
  • Clustering: K‑means, DBSCAN, clustering jerárquico y mezclas gaussianas.wikipedia+1
  • Reducción de dimensionalidad: análisis de componentes principales (PCA), t‑SPE, LDA y técnicas de selección de características basadas en varianza o tests estadísticos.

Además, scikit‑learn incluye herramientas sólidas para la evaluación y validación de modelos: validación cruzada, métricas de clasificación (precisión, recall, F1, ROC‑AUC), curvas de aprendizaje y de validación, y búsqueda de hiperparámetros mediante grid search o búsqueda aleatoria.

En el contexto universitario, la biblioteca se emplea habitualmente para:

  • Laboratorios de introducción al machine learning, donde los estudiantes implementan y comparan varios algoritmos sobre conjuntos de datos estándar como Iris, Digits o el Titaanic.copa-uniandes.
  • Proyectos de ciencia de datos que requieren preprocesamiento (manejo de valores perdidos, codificación de variables categóricas, escalado y normalización) antes de alimentar un modelo.
  • Investigación de métodos de optimización de modelos, utilizando las rutinas de ajuste de hiperparámetros y validación cruzada para comprender el sobreajuste y el subajuste.saishnp
  • Aplicaciones interdisciplinarias como bioinformática (clasificación de secuencias genéticas), ingeniería (predicción de fallas en sensores) y ciencias sociales (modelado de encuestas) gracias a su capacidad para trabajar con matrices dispersas y texto mediante los módulos de preprocesamiento y métricas de pares.

Una de las principales ventajas de scikit‑learn es su rendimiento: los algoritmos están implementados de manera optimizada, lo que permite trabajar con conjuntos de datos de tamaño medio a grande sin necesidad de recurrir a lenguajes de bajo nivel. Además, al ser de código abierto bajo licencia BSD, su uso es libre tanto en ámbito académico como en proyectos comerciales.

Para comenzar a usar scikit‑learn basta con instalarla mediante pip install scikit-learn o mediante una distribución científica como Anaconda. Un ejemplo básico de flujo de trabajo en un cuaderno de Jupyter podría ser:elcursodeia

pythonimport numpy as np
from sklearn import datasets, model_selection, preprocessing, svm, metrics

# Cargar un conjunto de datos de ejemplo
X, y = datasets.load_breast_cancer(return_X_y=True)

# Dividir en entrenamiento y prueba
X_train, X_test, y_train, y_test = model_selection.train_test_split(
    X, y, test_size=0.3, random_state=42
)

# Escalar las características (media 0, varianza 1)
scaler = preprocessing.StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test  = scaler.transform(X_test)

# Entrenar un clasificador SVM lineal
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X_train, y_train)

# Predecir y evaluar
y_pred = clf.predict(X_test)
print("Exactitud:", metrics.accuracy_score(y_test, y_pred))
print("Matriz de confusión:\n", metrics.confusion_matrix(y_test, y_pred))

Este flujo ilustra la facilidad con la que se puede pasar de la carga de datos al entrenamiento, evaluación y interpretación de resultados, todo dentro de un mismo ecosistema de Python.

En resumen, scikit‑learn constituye una herramienta esencial para cualquier estudiante universitario que se inicie o profundice en el aprendizaje automático y la ciencia de datos, gracias a su API unificada, su amplia colección de algoritmos probados, su integración con NumPy, SciPy y Pandas, y su sólida documentación y soporte comunitario.

Formación piloto de Drones | AESA – Agencia Estatal de Seguridad Aérea – Ministerio de Fomento

https://www.seguridadaerea.gob.es/en/ambitos/drones/formacion-de-pilotos-a-distancia-uas-dronesDrones | AESA-Agencia Estatal de Seguridad Aérea – Ministerio de Fomento

Drones | AESA-Agencia Estatal de Seguridad Aérea – Ministerio de Fomento

https://sede.seguridadaerea.gob.es/sede-aesa/catalogo-de-procedimientos/examen-de-pilotos-distancia-en-categor%C3%ADa-espec%C3%ADfica-bajo-escenarios

Pandas

Pandas es una biblioteca de código abierto para Python diseñada específicamente para la manipulación y el análisis de datos estructurados. Se basa en NumPy, utilizando sus arreglos ndarray como foundation, pero aporta estructuras de datos de nivel superior que facilitan el trabajo con tablas, series temporales y conjuntos de datos heterogéneos.

Estructuras de datos principales

  • Series: objeto unidimensional etiquetado capaz de almacenar cualquier tipo de dato (enteros, flotantes, cadenas, objetos Python). Cada elemento tiene un índice asociado que permite acceso y alineación eficiente.repositorio.
  • DataFrame: estructura bidimensional con filas y columnas, análoga a una hoja de cálculo o a una tabla SQL. Cada columna puede tener un tipo diferente y posee un nombre (etiqueta).
  • Panel (menos usado actualmente): extensión a tres dimensiones para datos que varían según dos ejes espaciales y uno temporal.eiposgrados

Funcionalidades clave para el nivel universitario

  1. Entrada/salida de datos – Pandas permite leer y escribir en numerosos formatos (CSV, Excel, JSON, SQL, HDF5, Parquet, etc.) con funciones como read_csv(), to_excel(), read_sql().
  2. Limpieza y preprocessing – Herramientas para detectar y tratar valores perdidos (isnull(), fillna(), dropna()), eliminar duplicados, cambiar tipos (astype()) y aplicar transformaciones vectorizadas.iddigitalschool
  3. Selección y filtrado – Indexado basado en etiquetas (loc), posición entera (iloc) y operaciones booleanas para extraer subconjuntos de filas o columnas según condiciones.repositorio.
  4. Agrupación y agregación – El método groupby() facilita la aplicación de funciones (suma, media, conteo, etc.) a particiones de datos definidas por uno o más criterios, análogo a la cláusula GROUP BY de SQL.
  5. Unión y combinación – Funciones merge(), join() y concat() permiten realizar joins internos, externos, izquierda-derecha y concatenar DataFrames a lo largo de ejes, útil para integrar fuentes heterogéneas.
  6. Manipulación de series temporales – Soporte para índices de tipo DatetimeIndex, reindexado, resampling (resample()) y ventanas móviles (rolling()), esencial en econometría y análisis de señales.
  7. Integración con el ecosistema científico – Los objetos Series y DataFrame se interoperan directamente con NumPy (df.values), SciPy (para estadísticas y pruebas) y scikit‑learn (alimentando estimadores con X = df.values).
  8. Visualización ligera – Métodos de trazado incorporados (df.plot()) basados en Matplotlib permiten generar rápidamente histogramas, diagramas de dispersión y series temporales para análisis exploratorio.

Ventajas respecto a enfoques tradicionales

  • Productividad: operaciones que requerirían bucles explícitos en Python puro se expresan en una o dos líneas gracias al broadcasting y a las funciones vectorizadas de Pandas.datacamp
  • Manejo eficiente de la memoria: los datos se almacenan en bloques contiguos homogéneos (gracias a NumPy) y se evita la sobrecarga de listas de objetos Python.eiposgrados
  • Flexibilidad: la combinación de indexing etiquetado y basado en posición permite pasar fácilmente de trabajo con datos estructurados a análisis de series temporales o datos panel.
  • Compatibilidad: al ser la biblioteca de facto para el análisis de datos en Python, se integra con prácticamente todas las herramientas del stack científico (Jupyter, Altair, Seaborn, Statsmodels, TensorFlow, PyTorch).

Aplicaciones típicas

  • Laboratorios de introducción a la ciencia de datos: carga de conjuntos de datos reales (por ejemplo, el Titanic, el Iris o datos de encuestas), limpieza, cálculo de estadísticas descriptivas y creación de visualizaciones básicas.
  • Cursos de estadística y econometría: manipulación de panel data, cálculo de regresiones mediante statsmodels después de preparar los datos con Pandas, y realización de pruebas de hipótesis sobre grupos (groupby().agg()).datademia+1
  • Proyectos de aprendizaje automático: preprocesado de características (escalado, codificación de variables categóricas con get_dummies()), separación en conjuntos de entrenamiento/prueba (train_test_split de scikit‑learn) y alimentación de modelos.joserzapata.
  • Análisis de series temporales en cursos de ingeniería o finanzas: resampling de datos de alta frecuencia, cálculo de medias móviles y modelado con ARIMA o Prophet después de preparar el índice temporal.
  • Trabajos finales de grado (TFG): integración de múltiples fuentes (archivos CSV, bases SQL, APIs REST) mediante read_csv(), read_sql() y json_normalize(), seguido de un pipeline de limpieza, agregación y exportación a formatos informativos (Excel, LaTeX tables).

Ejemplo básico de flujo de trabajo en un cuaderno de Jupyter

pythonimport pandas as pd
import numpy as np

# 1. Lectura de datos desde CSV
df = pd.read_csv('estudiantes.csv')          # columnas: nombre, edad, carrera, promedio

# 2. Exploración inicial
print(df.head())                             # primeras filas
print(df.describe())                         # estadísticas descriptivas
print(df.isnull().sum())                     # conteo de valores perdidos

# 3. Limpieza: eliminar filas con promedio faltante y rellenar edad media
df = df.dropna(subset=['promedio'])
df['edad'].fillna(df['edad'].median(), inplace=True)

# 4. Creación de una variable derivada
df['mayor_de_edad'] = np.where(df['edad'] >= 18, 'Sí', 'No')

# 5. Agrupación: promedio de notas por carrera
promedio_por_carrera = df.groupby('carrera')['promedio'].mean().reset_index()

# 6. Unión con otro dataset (por ejemplo, lista de becas)
becas = pd.read_csv('becas.csv')             # columnas: carrera, beca_disponible
df = df.merge(becas, on='carrera', how='left')

# 7. Exportación del resultado
df.to_csv('estudiantes_limpios.xlsx', index=False)
promedio_por_carrera.to_csv('promedio_carrera.csv', index=False)

Este fragmento ilustra cómo Pandas permite pasar de datos crudos a un conjunto limpio, enriquecido y listo para análisis estadístico o modelado, todo con un código legible y conciso.

En resumen, para un estudiante universitario Pandas constituye una herramienta esencial que combina facilidad de uso, potencia expresiva y estrecha integración con el ecosistema científico de Python. Su dominio facilita todo el ciclo de vida de los datos—desde la ingesta y limpieza hasta el análisis, visualización y preparación para algoritmos de aprendizaje automático—haciéndolo imprescindible en asignaturas de estadística, ciencia de datos, ingeniería, economía y cualquier disciplina que requiera tratamiento riguroso de información tabular o tempooral.

-> generado con IA