Versión 0.22.2.post1

Marzo 3 2020

La versión 0.22.2.post1 incluye una corrección de embalaje para la distribución de origen, pero el contenido de los paquetes es por lo demás idéntico al de las ruedas con la versión 0.22.2 (sin el sufijo .post1). Ambos contienen los siguientes cambios.

Registro de cambios

sklearn.impute

sklearn.metrics

sklearn.neighbors

Versión 0.22.1

Enero 2 2020

Esta es una versión de corrección de errores para resolver principalmente algunos problemas de empaquetado de la versión 0.22.0. También incluye mejoras menores en la documentación y algunas correcciones de errores.

Registro de cambios

sklearn.cluster

  • Fix cluster.KMeans con algorithm="elkan" ahora utiliza el mismo criterio de parada que con el algorithm="full" por defecto. #15930 por @inder128.

sklearn.inspection

sklearn.metrics

sklearn.model_selection

sklearn.naive_bayes

  • Fix Eliminado el decorador abstractmethod para el método _check_X en naive_bayes.BaseNB que podía romper los proyectos posteriores que heredaban de esta clase base pública obsoleta. #15996 por Brigitta Sipőcz.

sklearn.preprocessing

sklearn.semi_supervised

sklearn.utils

  • Fix utils.check_array ahora convierte correctamente DataFrame de pandas con columnas booleanas a flotantes. #15797 por Thomas Fan.

  • Fix utils.check_is_fitted acepta de nuevo un argumento explícito attributes para comprobar atributos específicos como marcadores explícitos de un estimador ajustado. Cuando no se proporcionan attributes explícitos, sólo se utilizan como marcadores «ajustados» los atributos que terminan con un guión bajo y no empiezan con un guión bajo doble. El argumento all_or_any ya no está obsoleto. Este cambio se realiza para restaurar cierta compatibilidad con el comportamiento de esta utilidad en la versión 0.21. #15947 por Thomas Fan.

Version 0.22.0

Diciembre 3 2019

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

Leyenda para registros de cambios

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

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

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

  • Enhancement : una mejora menor miscelánea.

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

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

Actualización del sitio

Nuestro sitio web <https://scikit-learn.org/>`_ ha sido renovado y se le ha dado un nuevo aspecto #14849 por Thomas Fan.

Definición clara de la API pública

Scikit-learn tiene una API pública, y una API privada.

Hacemos todo lo posible para no romper la API pública, y para introducir únicamente cambios compatibles con las versiones anteriores que no requieran ninguna acción del usuario. Sin embargo, en los casos en que eso no es posible, cualquier cambio en la API pública está sujeto a un ciclo de obsolescencia de dos versiones menores. La API privada no está documentada públicamente y no está sujeta a ningún ciclo de obsolescencia, por lo que los usuarios no deberían confiar en su estabilidad.

Una función u objeto es público si está documentado en la Referencia API y si puede ser importado con una ruta de importación sin guiones bajos iniciales. Por ejemplo, sklearn.pipeline.make_pipeline es pública, mientras que sklearn.pipeline._name_estimators es privada. sklearn.ensemble._gb.BaseEnsemble también es privado porque todo el módulo _gb es privado.

Hasta la versión 0.22, algunas herramientas eran públicas de facto (sin guión bajo inicial), cuando deberían haber sido privadas en primer lugar. En la versión 0.22, estas herramientas se han hecho correctamente privadas, y se ha limpiado el espacio público de la API. Además, la importación de la mayoría de los submódulos está ahora obsoleta: se debe utilizar, por ejemplo, from sklearn.cluster import Birch en lugar de from sklearn.cluster.birch import Birch (en la práctica, birch.py se ha movido a _birch.py).

Nota

Todas las herramientas de la API pública deberían estar documentadas en la Referencia API. Si encuentras una herramienta pública (sin guión bajo inicial) que no está en la referencia de la API, significa que debería ser privada o estar documentada. Por favor, infórmanos abriendo una incidencia!

Este trabajo fue rastreado en issue 9250 y issue 12927.

Obsolescencias: usar FutureWarning de ahora en adelante

Cuando una característica resulta obsoleta, las versiones anteriores de scikit-learn solían lanzar un DeprecationWarning. Como los DeprecationWarnings no son mostrados por defecto por Python, scikit-learn necesitaba recurrir a un filtro de advertencia personalizado para mostrar siempre las advertencias. Ese filtro a veces interfería con los filtros de advertencia personalizados de los usuarios.

A partir de la versión 0.22, scikit-learn mostrará FutureWarnings para las obsolescencias, como recomienda la documentación de Python. FutureWarnings se muestra siempre por defecto por Python, por lo que se ha eliminado el filtro personalizado y scikit-learn ya no entorpece con filtros de usuario. #15080 por Nicolas Hug.

Modelos modificados

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.base

  • API Change Desde la versión 0.24 base.BaseEstimator.get_params lanzará un AttributeError en lugar de devolver None para los parámetros que están en el constructor del estimador pero que no están almacenados como atributos en la instancia. #14464 por Joel Nothman.

sklearn.calibration

sklearn.cluster

sklearn.compose

sklearn.cross_decomposition

sklearn.datasets

sklearn.decomposition

sklearn.dummy

sklearn.ensemble

sklearn.feature_extraction

sklearn.feature_selection

sklearn.gaussian_process

sklearn.impute

sklearn.inspection

sklearn.kernel_approximation

sklearn.linear_model

sklearn.manifold

sklearn.metrics

sklearn.model_selection

sklearn.multioutput

sklearn.naive_bayes

sklearn.neighbors

sklearn.neural_network

sklearn.pipeline

sklearn.preprocessing

sklearn.model_selection

sklearn.svm

  • Enhancement svm.SVC y svm.NuSVC ahora aceptan un parámetro break_ties. Este parámetro da como resultado que predict rompa los lazos de acuerdo con los valores de confianza de decision_function, if decision_function_shape='ovr', y el número de clases de destino > 2. #12557 de Adrin Jalali.

  • Enhancement Los estimadores SVM ahora arrojan un error más específico cuando kernel='precomputed' y se ajustan a datos no cuadrados. #14336 por Gregory Dexter.

  • Fix svm.SVC, svm.SVR, svm.NuSVR y svm. neClassSVM cuando se recibían valores negativos o cero para el parámetro sample_weight en ajuste del método(), se generaba un modelo no válido. Este comportamiento ocurrió sólo en algunos escenarios límite. #14286 por Alex Shacked.

  • Fix El atributo n_support_ de svm.SVR y svm.OneClassSVM no se inicializó previamente, y tenía el tamaño 2. Ahora tiene el tamaño 1 con el valor correcto. #15099 por Nicolas Hug.

  • Fix se corrigió un error en BaseLibSVM._sparse_fit donde n_SV=0 provoca un ZeroDivisionError. #14894 por Danna Naser.

  • Fix El solucionador liblinear ahora soporta sample_weight. #15038 por Guillaume Lemaitre.

sklearn.tree

sklearn.utils

  • Feature check_estimator ahora puede generar comprobaciones estableciendo generate_only=True. Anteriormente, la ejecución de check_estimator se detenía cuando fallaba la primera comprobación. Con generate_only=True, todas las comprobaciones pueden ejecutarse independientemente e informar de las que fallan. Lea más en Rodando tu propio estimador. #14381 por Thomas Fan.

  • Feature Se ha añadido un decorador específico de pytest, parametrize_with_checks, para parametrizar las comprobaciones del estimador para una lista de estimadores. #14381 por Thomas Fan.

  • Feature Una nueva variable aleatoria, utils.fixes.loguniform implementa una variable aleatoria log-uniforme (por ejemplo, para su uso en RandomizedSearchCV). Por ejemplo, los resultados 1, 10 y 100 son todos igualmente probables para loguniform(1, 100). Ver #11232 de Scott Sievert y Nathaniel Saul, y SciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>.

  • Enhancement utils.safe_indexing (ahora obsoleto) acepta un parámetro axis para indexar array-like a través de filas y columnas. La indexación de columnas se puede hacer en un array NumPy, una matriz dispersa SciPy y un DataFrame de Pandas. Se ha realizado una refactorización adicional. #14035 y #14475 por Guillaume Lemaitre.

  • Enhancement utils.extmath.safe_sparse_dot funciona entre 3D+ ndarray y matriz dispersa. #14538 por Jérémie du Boisberranger.

  • Fix utils.check_array ahora genera un error en lugar de convertir NaN en entero. #14872 por Roman Yurchak.

  • Fix utils.check_array detectará ahora correctamente los tipos de datos numéricos en los dataframes de pandas, corrigiendo un error por el que float32 se convertía en float64 innecesariamente. #15094 por Andreas Müller.

  • API Change Las siguientes utils ya son obsoletas y ahora son privadas:

    • choose_check_classifiers_labels

    • enforce_estimator_tags_y

    • mocking.MockDataFrame

    • mocking.CheckingClassifier

    • optimize.newton_cg

    • random.random_choice_csc

    • utils.choose_check_classifiers_labels

    • utils.enforce_estimator_tags_y

    • utils.optimize.newton_cg

    • utils.random.random_choice_csc

    • utils.safe_indexing

    • utils.mocking

    • utils.fast_dict

    • utils.seq_dataset

    • utils.weight_vector

    • utils.fixes.parallel_helper (eliminado)

    • Todos los utils.testing excepto all_estimators que ahora está en utils.

sklearn.isotonic

Varios

  • Fix Port lobpcg de SciPy que implementa algunas correcciones de errores pero sólo está disponible en 1.3+. #13609 y #14971 por Guillaume Lemaitre.

  • API Change Scikit-learn ahora convierte cualquier estructura de datos de entrada que implemente un arreglo de pato a un arreglo de numpy (usando __array__) para asegurar un comportamiento consistente en lugar de depender de __array_function__ (ver NEP 18). #14702 por Andreas Müller.

  • API Change Sustituir las comprobaciones manuales por check_is_fitted. Los errores arrojados al utilizar un estimador no ajustado son ahora más uniformes. #13013 por Agamemnon Krasoulis.

Cambios en las comprobaciones de los estimadores

Estos cambios afectan principalmente a los desarrolladores de bibliotecas.

  • Ahora se espera que los estimadores lancen un NotFittedError si se llama a predict o transform antes de fit; antes se aceptaba un AttributeError o ValueError. #13013 by by Agamemnon Krasoulis.

  • Los clasificadores sólo binarios son ahora compatibles con las comprobaciones de los estimadores. Estos clasificadores deben tener la etiqueta de estimador binary_only=True. #13875 de Trevor Stephens.

  • Se espera que los estimadores conviertan los datos de entrada (X, y, sample_weights) en numpy.ndarray y nunca llamen a __array_function__ en el tipo de datos original que se pasa (ver NEP 18). #14702 por Andreas Müller.

  • La etiqueta del estimador requires_positive_X (para los modelos que requieren que X no sea negativo) es utilizada ahora por utils.estimator_checks.check_estimator para asegurarse de que se emita un mensaje de error adecuado si X contiene algunas entradas negativas. #14680 por Alex Gramfort.

  • Se añadió la comprobación de que los estimadores emparejan un error en los datos no cuadrados #14336 por Gregory Dexter.

  • Se añadieron dos estimadores de salida múltiple comunes check_classifier_multioutput y check_regressor_multioutput. #13392 por Rok Mihevc.

  • Fix Agregado check_transformer_data_not_an_array a las comprobaciones donde faltan

  • Fix La resolución de las etiquetas de estimadores ahora sigue a la MRO regular. Solían ser reemplazables solo una vez. #14884 por Andreas MuATIller.

Colaboradores de código y documentación

Gracias a quienes han contribuido al mantenimiento y mejora del proyecto desde la versión 0.21, incluyendo:

Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang «Maxin» Tang, Yulia Zamriy, Zhao Feng