Aprender  /  Novedades

Novedades de scikit-learn 1.9: callbacks, arrays dispersos, soporte de GPU y las obsolescencias que hay que corregir

Barras de progreso durante el entrenamiento, arrays dispersos en lugar de matrices, más modelos en la GPU y una lista de obsolescencias que se convertirán en errores en la 1.11. Qué ha cambiado y qué actualizar en tu código.

Novedades7 min de lecturaActualizado el 17 de octubre de 2026
PythonAnálisis de datosIANovedades
Todas las guías y chuletas

scikit-learn 1.9 salió en junio de 2026 y la versión de correcciones 1.9.1 llegó en septiembre. Es la biblioteca detrás de la mayor parte del machine learning clásico en Python: regresión, clasificación, clustering y los pipelines que los rodean. Esta versión trata menos de algoritmos nuevos y más de la experiencia de uso: por fin puedes ver el progreso del entrenamiento, más modelos funcionan en la GPU y se corrigen varios problemas de siempre. También pone en marcha la cuenta atrás de una serie de obsolescencias que se convertirán en errores en la 1.11.

Calendario de versiones

  1. scikit-learn 1.9.0

    Nuevas funciones y obsolescencias.

  2. scikit-learn 1.9.1

    Correcciones, entre ellas el enrutamiento de metadatos en pipelines.

Terminal
pip install --upgrade scikit-learn

Callbacks: mira cómo se entrenan tus modelos

Una búsqueda en rejilla larga era una caja negra: la lanzabas y esperabas. scikit-learn 1.9 añade una API de callbacks experimental para que los estimadores informen de lo que hacen durante fit. Incluye dos callbacks, sklearn.callback.ProgressBar y sklearn.callback.ScoringMonitor, y admite progreso anidado, incluso cuando el trabajo se ejecuta en paralelo.

Dónde funcionan los callbacks en la 1.9

LogisticRegression
Solo con solver="lbfgs".
GridSearchCV y RandomizedSearchCV
Además de HalvingGridSearchCV y HalvingRandomSearchCV.
Pipeline
Progreso a través de cada paso.
StandardScaler
El primer transformador compatible.

Arrays dispersos en lugar de matrices dispersas

SciPy está pasando de las matrices dispersas a los arrays dispersos, que se comportan más como los arrays de NumPy (por ejemplo, * significa multiplicación elemento a elemento, no producto de matrices). scikit-learn ya puede devolver cualquiera de los dos. El valor por defecto sigue siendo "spmatrix" y el plan es cambiar a "sparray" dentro de unas versiones, así que merece la pena probarlo ya:

Python
import sklearn
sklearn.set_config(sparse_interface="sparray")

# From here on, scikit-learn returns SciPy sparse arrays
# (for example csr_array) wherever it supports the new setting.
print(sklearn.get_config()["sparse_interface"])   # "sparray"

Modelos más rápidos y más precisos

Velocidad y memoria

Nuevo
  • LogisticRegression con lbfgs calcula en float32 cuando tus datos son float32 y usa menos memoria
  • RidgeCV y RidgeClassifierCV son más rápidos y estables
  • SpectralEmbedding es más rápido
  • El gap safe screening acelera los regresores dispersos con pérdida cuadrática

Corrección

Arreglado
  • Pesos de muestra bien gestionados en HistGradientBoosting, RandomForest y ExtraTrees
  • Corregido el criterio friedman_mse de GradientBoosting (el parámetro criterion queda obsoleto)
  • El método yeo-johnson de PowerTransformer es numéricamente más estable
  • Algunas puntuaciones y valores ajustados pueden moverse un poco tras actualizar

Herramientas nuevas

Añadido
  • metrics.metric_at_thresholds calcula una métrica en cada umbral
  • PrecisionRecallDisplay.from_cv_results dibuja curvas a partir de cross_validate
  • RandomForestRegressor admite valores ausentes con el error absoluto
  • MiniBatchKMeans acepta pesos de muestra

Otras novedades: la vista de los estimadores entrenados en los cuadernos muestra ahora los atributos ajustados, y la vista de ColumnTransformer muestra cómo se montan las columnas de salida. narwhals pasa a ser una dependencia y gestiona la salida en dataframes, así que set_output(transform="polars") y la salida de pandas funcionan de forma más coherente.

Más scikit-learn en la GPU

Gracias al estándar array API, scikit-learn puede ejecutar algunos estimadores directamente sobre arrays de PyTorch o CuPy en la GPU, sin convertirlos a NumPy. La 1.9 añade LogisticRegression y PoissonRegressor (con el solver lbfgs), Nystroem, FeatureUnion cuando todos sus pasos lo admiten y más métricas, como la average precision.

Obsolescencias que corregir antes de la 1.11

Generan avisos en la 1.9 y dejarán de funcionar en la 1.11. Cada una tiene una solución sencilla:

Python
# Deprecated: SVC(probability=True) is not thread-safe
from sklearn.svm import SVC
from sklearn.calibration import CalibratedClassifierCV

clf = CalibratedClassifierCV(SVC(), ensemble=False)
clf.fit(X_train, y_train)
proba = clf.predict_proba(X_test)

Otras obsolescencias y cambios

lasso_path y enet_path
n_alphas queda obsoleto. Pasa alphas como entero o como lista.
GradientBoosting
El parámetro criterion queda obsoleto.
confusion_matrix_at_thresholds
Pasa pos_label y sample_weight como argumentos con nombre.
Métricas con texto
accuracy_score, confusion_matrix y otras dan error cuando y_true es texto e y_pred es numérico.

Una actualización segura en cuatro pasos

  1. 1

    Fija versiones y crea una rama

    Actualiza en un entorno o rama aparte, no en producción.

  2. 2

    Haz visibles los avisos

    Ejecuta tus pruebas con python -W error::FutureWarning para encontrar cada obsolescencia.

  3. 3

    Compara puntuaciones

    Vuelve a entrenar los modelos clave y compara métricas; las correcciones de pesos y de discretización pueden mover un poco los resultados.

  4. 4

    Pasa a la 1.9.1

    Corrige el enrutamiento de metadatos en pipelines, así que úsala en lugar de la 1.9.0.

Pon a prueba lo que has aprendido

1/3¿Qué callbacks incluye scikit-learn 1.9?

2/3¿Qué sustituye a SVC(probability=True)?

3/3¿Qué cambia sparse_interface="sparray"?

¿Vas a actualizar tu stack de Python este otoño? Lee la guía para actualizar a pandas 3.0, las novedades de Python 3.15 y prepara entornos limpios con uv.

Fuentes: el blog de scikit-learn «release 1.9» (12 de junio de 2026) y las notas de la versión de scikit-learn 1.9, incluida la 1.9.1 (septiembre de 2026).

Alessandro Ecclesie AgazziEscrito por Alessandro Ecclesie Agazzi, analytics engineer en Londres. Actualizado el 17 de octubre de 2026. Sobre mí

¿Te ha resultado útil?

Aquí se publican con regularidad nuevas guías y artículos sobre las novedades en datos e IA. Sígueme en LinkedIn o comparte este artículo con un compañero.