Versión 0.23.2

Modelos cambiados

Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.

Los detalles están listados en el registro de cambios a continuación.

(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)

Registro de cambios

sklearn.cluster

sklearn.decomposition

sklearn.ensemble

sklearn.feature_extraction

sklearn.linear_model

sklearn.manifold

sklearn.metrics

sklearn.pipeline

sklearn.utils

Versión 0.23.1

18 de mayo de 2020

Registro de cambios

sklearn.cluster

  • Efficiency Se ha mejorado la eficiencia de cluster.KMeans para conjuntos de datos muy pequeños. En particular, ya no puede generar hilos inactivos. #17210 y #17235 por :user:`Jeremie du Boisberranger <jeremiedbb>.

  • Fix Se corrigió un error en cluster.KMeans donde las ponderaciones de la muestra proporcionadas por el usuario se modificaban en su lugar. #17204 por Jeremie du Boisberranger.

Varios

  • Fix Se corrigió un error en el repr de los estimadores de terceros que utilizan un parámetro **kwargs en su constructor, cuando changed_only es True que es ahora el valor por defecto. #17205 por Nicolas Hug.

Versión 0.23.0

12 de mayo de 2020

Para una breve descripción de los principales aspectos de la versión, consulta Aspectos Destacados de scikit-learn 0.23.

Leyenda para registros de cambios

  • Major Feature : algo grande que antes no podías hacer.

  • Feature : algo que antes no podías hacer.

  • Efficiency : una característica existente ahora puede no requerir tanto cálculo o memoria.

  • Enhancement : una mejora menor variada.

  • Fix : algo que anteriormente no funcionaba según lo documentado – o según las expectativas razonables – ahora debería funcionar.

  • API Change : tendrás que cambiar tu código para tener el mismo efecto en el futuro; o una característica será eliminada en el futuro.

Aplicación de argumentos basados en palabras clave

En un esfuerzo por promover un uso claro y no ambiguo de la biblioteca, se espera que la mayoría de los parámetros de constructores y funciones se pasen como argumentos de palabra clave (es decir, utilizando la sintaxis param=valor) en lugar de posicionales. Para facilitar la transición, se genera un FutureWarning si un parámetro de palabra clave se utiliza como posicional. En la versión 1.0 (cambio de nombre de la 0.25), estos parámetros serán estrictamente de palabra clave, y se generará un TypeError. #15005 por Joel Nothman, Adrin Jalali, Thomas Fan, y Nicolas Hug. Ver SLEP009 para más detalles.

Modelos cambiados

Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.

Los detalles están listados en el registro de cambios a continuación.

(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)

Registro de cambios

sklearn.cluster

sklearn.compose

sklearn.datasets

sklearn.decomposition

sklearn.ensemble

sklearn.feature_extraction

sklearn.feature_selection

sklearn.gaussian_process

sklearn.impute

sklearn.inspection

sklearn.linear_model

sklearn.metrics

  • Enhancement metrics.pairwise.pairwise_distances_chunked permite ahora que su reduce_func no tenga valor de retorno, permitiendo operaciones in place. #16397 por Joel Nothman.

  • Fix Se corrigió un error en metrics.mean_squared_error para no ignorar el argumento squared cuando el argumento multioutput='raw_values'. #16323 por Rushabh Vasani

  • Fix Se corrigió un error en metrics.mutual_info_score donde se pudieron devolver puntuaciones negativas. #16362 por Thomas Fan.

  • Fix Se corrigió un error en metrics.confusion_matrix que generaba un error cuando y_true y y_pred tenían longitud cero y labels no era None. Además, se produce un error cuando se da una lista vacía al parámetro labels. #16442 por Kyle Parsons.

  • API Change Cambiado el formato de los valores en metrics.ConfusionMatrixDisplay.plot y metrics.plot_confusion_matrix para escoger el formato más corto (ya sea “2g” o “d”). #16159 por Rick Mackenbach y Thomas Fan.

  • API Change A partir de la versión 0.25, metrics.pairwise.pairwise_distances ya no calculará automáticamente el parámetro VI para la distancia de Mahalanobis y el parámetro V para la distancia seuclidean (distancia euclidiana estandarizada) si se pasa Y. El usuario deberá calcular este parámetro en los datos de entrenamiento de su elección y pasarlo a pairwise_distances. #16993 por Joel Nothman.

sklearn.model_selection

sklearn.multioutput

sklearn.naive_bayes

sklearn.neural_network

sklearn.inspection

sklearn.preprocessing

sklearn.semi_supervised

sklearn.svm

  • Fix Efficiency Mejora de los generadores de números aleatorios libsvm y liblinear utilizados para seleccionar aleatoriamente las coordenadas en los algoritmos de descenso de coordenadas. Se utilizaba rand() dependiente de la plataforma C, que sólo es capaz de generar números hasta 32767 en la plataforma Windows (ver esta entrada del blog) y además tiene una pobre potencia de aleatorización como sugiere esta presentación. Fue reemplazado con C++11 mt19937, un Mersenne Twister que genera correctamente números aleatorios de 31bits/63bits en todas las plataformas. Además, el crudo postprocesador «modulo» utilizado para obtener un número aleatorio en un intervalo acotado fue reemplazado por el método Lemire ajustado, como se sugiere en esta entrada del blog. Cualquier modelo que utilice el solucionador svm.libsvm o svm.liblinear, incluyendo svm.LinearSVC, svm.LinearSVR, svm.NuSVC, svm.NuSVR, svm.OneClassSVM, svm.SVC, svm.SVR, linear_model.LogisticRegression, está afectado. En particular, los usuarios pueden esperar una mejor convergencia cuando el número de muestras (LibSVM) o el número de características (LibLinear) es grande. #13511 by Sylvain Marié.

  • Fix Arreglado el uso de kernels personalizados que no toman entradas flotantes como los kernels de cadena en svm.SVC y svm.SVR. Ten en cuenta que ahora se espera que los kernels personalizados validen su entrada cuando antes recibían arreglos numéricos válidos. #11296 por Alexandre Gramfort y Georgi Peev.

  • API Change Los atributos probA_ y probB_ de svm.SVR y svm.OneClassSVM ahora están obsoletos ya que no eran útiles. #15558 por Thomas Fan.

sklearn.tree

sklearn.utils

  • Major Feature Los estimadores ahora pueden mostrarse con una representación html enriquecida. Esto se puede activar en los cuadernos de Jupyter estableciendo display='diagram' en set_config. El html en bruto puede ser devuelto utilizando utils.estimator_html_repr. #14180 por Thomas Fan.

  • Enhancement Mejora del mensaje de error en utils.validation.column_or_1d. #15926 por Loïc Estève.

  • Enhancement añadida advertencia en utils.check_array para DataFrame disperso de pandas. #16021 por Rushabh Vasani.

  • Enhancement utils.check_array ahora construye una matriz dispersa a partir de un DataFrame de pandas que contiene solo columnas SparseArray. #16728 por Thomas Fan.

  • Enhancement utils.validation.check_array soporta el tipo de dato entero anulable de pandas con valores faltantes cuando force_all_finite se establece como False o 'allow-nan' en cuyo caso los datos se convierten a valores de punto flotante donde los valores pd.NA son reemplazados por np.nan. Como consecuencia, todos los transformadores sklearn.preprocessing que aceptan entradas numéricas con valores faltantes representados como np.nan ahora también aceptan ser suministrados directamente por dataframes de pandas con columnas de tipo pd.Int* o pd.Uint* que utilizan pd.NA como marcador de valores faltantes. #16508 por Thomas Fan.

  • API Change Pasar clases a utils.estimator_checks.check_estimator y utils.estimator_checks.parametrize_with_checks está ahora obsoleto, y el soporte para las clases será eliminado en 0.24. Pase instancias en su lugar. #17032 por Nicolas Hug.

  • API Change Se eliminó la utilidad privada _safe_tags en utils.estimator_checks, por lo tanto todas las etiquetas deben obtenerse a través de estimator._get_tags(). Ten en cuenta que los Mixins como RegressorMixin deben venir antes de las clases base en el MRO para que _get_tags() funcione correctamente. #16950 por Nicolas Hug.

  • Fix utils.all_estimators ahora sólo devuelve estimadores públicos. #15380 por Thomas Fan.

Varios

  • Major Feature Añade una representación HTML de los estimadores para ser mostrados en un cuaderno de jupyter o jupyter lab. Esta visualización se activa estableciendo la opción display en sklearn.set_config. #14180 por Thomas Fan.

  • Enhancement scikit-learn ahora funciona con mypy sin errores. #16726 por Roman Yurchak.

  • API Change La mayoría de los estimadores ahora cuentan con un atributo n_features_in_. Este atributo es igual al número de características pasadas al método fit. Ver SLEP010 para más detalles. #16112 por Nicolas Hug.

  • API Change Los estimadores tienen ahora una etiqueta requires_y que es False por defecto excepto para los estimadores que heredan de ~sklearn.base.RegressorMixin o ~sklearn.base.ClassifierMixin. Esta etiqueta se utiliza para garantizar que se genere un mensaje de error adecuado cuando se esperaba y pero se pasó None. #16622 por Nicolas Hug.

  • API Change La configuración por defecto print_changed_only se ha cambiado de False a True. Esto significa que el repr de los estimadores es ahora más conciso y sólo muestra los parámetros cuyo valor por defecto ha sido cambiado al imprimir un estimador. Puede restaurar el comportamiento anterior utilizando sklearn.set_config(print_changed_only=False). Además, ten en cuenta que siempre es posible inspeccionar rápidamente los parámetros de cualquier estimador utilizando est.get_params(deep=False). #17061 por Nicolas Hug.

Colaboradores de código y documentación

Gracias a todos los que han contribuido al mantenimiento y la mejora del proyecto desde la versión 0.22, incluyendo:

Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang «Maxin» Tang