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
scikit-learn 1.9.0
Nuevas funciones y obsolescencias.
scikit-learn 1.9.1
Correcciones, entre ellas el enrutamiento de metadatos en pipelines.
Obsolescencias eliminadasPróximamente
Los avisos de la 1.9 pasan a ser errores.
pip install --upgrade scikit-learnCallbacks: 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:
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:
# 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)from sklearn.metrics import log_loss
# Deprecated: log_loss(y_test, proba) via y_pred
score = log_loss(y_test, y_proba=proba)from sklearn.linear_model import LogisticRegressionCV
# The default scoring changes from accuracy to "neg_log_loss" in 1.11.
# Set it explicitly to keep today's behaviour and silence the warning.
model = LogisticRegressionCV(scoring="accuracy")from sklearn.preprocessing import TargetEncoder
from sklearn.model_selection import KFold
# shuffle and random_state are deprecated: pass a CV splitter instead
enc = TargetEncoder(cv=KFold(n_splits=5, shuffle=True, random_state=0))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
Fija versiones y crea una rama
Actualiza en un entorno o rama aparte, no en producción.
- 2
Haz visibles los avisos
Ejecuta tus pruebas con python -W error::FutureWarning para encontrar cada obsolescencia.
- 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
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?
Ambos están en sklearn.callback y la API es experimental.
2/3¿Qué sustituye a SVC(probability=True)?
El parámetro probability queda obsoleto porque no es seguro entre hilos.
3/3¿Qué cambia sparse_interface="sparray"?
El valor por defecto sigue siendo spmatrix, con un cambio previsto más adelante.
Has acertado 0 de 3.
¿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).
