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¶
Efficiency Reducir el uso de memoria asintótica de
impute.KNNImputermediante el corte del cálculo de la distancia por pares. #16397 por Joel Nothman.
sklearn.metrics¶
Fix Se ha corregido un error en
metrics.plot_roc_curvepor el que se pasaba el nombre del estimador enmetrics.RocCurveDisplayen lugar del parámetroname. El resultado es un gráfico diferente cuando se llama ametrics.RocCurveDisplay.plotpara las siguientes veces. #16500 por Guillaume Lemaitre.Fix Se ha corregido un error en
metrics.plot_precision_recall_curvepor el que se pasaba el nombre del estimador enmetrics.PrecisionRecallDisplayen lugar del parámetroname. El resultado es un gráfico diferente cuando se llama ametrics.PrecisionRecallDisplay.plotpara las veces siguientes. #16505 por Guillaume Lemaitre.
sklearn.neighbors¶
Fix Corregir un error que convertía una lista de arreglos en un arreglo de objetos 2-D en lugar de un arreglo 1-D que contenía arreglo NumPy. Este error afectaba a
neighbors.NearestNeighbors.radius_neighbors. #16076 por Guillaume Lemaitre y Alex Shacked.
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.KMeansconalgorithm="elkan"ahora utiliza el mismo criterio de parada que con elalgorithm="full"por defecto. #15930 por @inder128.
sklearn.inspection¶
Fix
inspection.permutation_importancedevolverá las mismasimportanciascuando se dé unestado_aleatoriotanto paran_jobs=1como paran_jobs>1tanto con backends de memoria compartida (seguridad de hilos) como de memoria aislada, backends basados en procesos. También hay que evitar que los datos sean de tipo objeto y evitar el error de sólo lectura en dataframes grandes conn_jobs>1como se informó en #15810. Seguimiento de #15898 por Shivam Gargsya. #15933 por Guillaume Lemaitre y Olivier Grisel.Fix
inspection.plot_partial_dependenceyinspection.PartialDependenceDisplay.plotahora comprueban consistentemente el número de ejes pasados. #15760 por Thomas Fan.
sklearn.metrics¶
Fix
metrics.plot_confusion_matrixahora genera un error cuandonormalizeno es válido. Anteriormente, se ejecutaba bien sin normalización. #15888 por Hanmin Qin.Fix
metrics.plot_confusion_matrixahora colorea el color de la etiqueta correctamente para maximizar el contraste con su fondo. #15936 por Thomas Fan y @DizietAsahi.Fix
metrics.classification_reportya no ignora el valor del argumento de la palabra clavezero_division. #15879 por Bibhash Chandra Mitra.Fix Corregido un error en
metrics.plot_confusion_matrixpara pasar correctamente el parámetrovalues_formata la llamadaConfusionMatrixDisplayplot(). #15937 por Stephen Blystone.
sklearn.model_selection¶
Fix
model_selection.GridSearchCVymodel_selection.RandomizedSearchCVaceptan valores escalares proporcionados enfit_params. El cambio en 0.22 rompía la compatibilidad con versiones anteriores. #15863 por Adrin Jalali y Guillaume Lemaitre.
sklearn.naive_bayes¶
Fix Eliminado el decorador
abstractmethodpara el método_check_Xennaive_bayes.BaseNBque podía romper los proyectos posteriores que heredaban de esta clase base pública obsoleta. #15996 por Brigitta Sipőcz.
sklearn.preprocessing¶
Fix
preprocessing.QuantileTransformerahora garantiza que el atributoquantiles_esté completamente ordenado de forma no decreciente. #15751 by Tirth Patel.
sklearn.semi_supervised¶
Fix
semi_supervised.LabelPropagationysemi_supervised.LabelSpreadingahora permiten llamar a la función núcleo para devolver la matriz de ponderaciones dispersa. #15868 por Niklas Smedemark-Margulies.
sklearn.utils¶
Fix
utils.check_arrayahora convierte correctamente DataFrame de pandas con columnas booleanas a flotantes. #15797 por Thomas Fan.Fix
utils.check_is_fittedacepta de nuevo un argumento explícitoattributespara comprobar atributos específicos como marcadores explícitos de un estimador ajustado. Cuando no se proporcionanattributesexplí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 argumentoall_or_anyya 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.
cluster.KTechnscuandon_jobs=1. Fixdecomposition.SparseCoder,decomposition.DictionaryLearning, ydecomposition.MiniBatchDictionaryLearningFixdecomposition.SparseCoderconalgorithm='lasso_lars'Fixdecomposition.SparsePCAdondenormalize_componentsno tiene efecto debido a la obsolescencia.ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorFix , Feature , Enhancement .impute.IterativeImputercuandoXtiene características sin valores faltantes. Featurelinear_model.RidgecuandoXes disperso. Fixmodel_selection.StratifiedKFoldy cualquier uso decv=intcon un clasificador. Fixcross_decomposition.CCAal usar scipy >= 1.3 Fix
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_paramslanzará 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¶
Fix Se ha corregido un error que hacía que
calibration.CalibratedClassifierCVfallara cuando se le daba un parámetrosample_weightde tipolist(en el caso de quesample_weightsno estuviera soportado por el estimador envuelto). #13575 por William de Vazelhes.
sklearn.cluster¶
Feature
cluster.SpectralClusteringahora acepta el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Enhancement
cluster.SpectralClusteringahora acepta un parámetron_componentes. Este parámetro extiende la funcionalidad de la claseSpectralClusteringpara que coincida concluster.spectral_clustering. #13726 por Shuzhe Xiao.Fix Se ha corregido un error por el que
cluster.KMeansproducía resultados inconsistentes entren_jobs=1yn_jobs>1debido al manejo del estado aleatorio. #9288 por Bryan Yang.Fix Se ha corregido un error por el que el algoritmo
elkanencluster.KMeansproducía un fallo de segmentación en arreglos grandes debido al desbordamiento del índice de enteros. #15057 por Vladimir Korolev.Fix
MeanShiftahora acepta un max_iter con un valor por defecto de 300 en lugar de usar siempre el 300 por defecto. También expone ahora unn_iter_que indica el número máximo de iteraciones realizadas en cada semilla. #15120 por Adrin Jalali.Fix
cluster.AgglomerativeClusteringycluster.FeatureAgglomerationahora lanzan un error siaffinity='cosine'yXtiene muestras que son todos ceros. #7943 por @mthorrell.
sklearn.compose¶
Feature Añade
compose.make_column_selectorque se utiliza concompose.ColumnTransformerpara seleccionar las columnas del DataFrame en base al nombre y al dtype. #12303 por Thomas Fan.Fix Corregido un error en
compose.ColumnTransformerque fallaba al seleccionar las columnas adecuadas cuando se usaba una lista booleana, con NumPy anterior a la 1.12. #14510 por Guillaume Lemaitre.Fix Se ha corregido un error en
compose.TransformedTargetRegressorque no pasaba**fit_paramsal regresor subyacente. #14890 por Miguel Cabrera.Fix La
compose.ColumnTransformerahora requiere que el número de características sea consistente entrefitytransform. Ahora se lanza unFutureWarning, y esto dará un error en 0.24. Si el número de características no es consistente y se utiliza la indexación negativa, se produce un error. #14544 by Adrin Jalali.
sklearn.cross_decomposition¶
Feature
cross_decomposition.PLSCanonicalycross_decomposition.PLSRegressiontienen una nueva funcióninverse_transformpara transformar los datos al espacio original. #15304 by Jaime Ferrando Huertas.Enhancement
decomposition.KernelPCAahora comprueba correctamente los valores propios encontrados por el solucionador para problemas numéricos o de condicionamiento. Esto asegura la consistencia de los resultados a través de los solucionadores (diferentes opciones paraeigen_solver), incluyendo solucionadores aproximados como'randomized'y'lobpcg'(ver #12068). #12145 por Sylvain MariéFix Se ha corregido un error por el que
cross_decomposition.PLSCanonicalycross_decomposition.PLSRegressiondaban un error cuando se ajustaban con una matriz objetivoYen la que la primera columna era constante. #13609 por Camila Williamson.Fix
cross_decomposition.CCAahora produce los mismos resultados con scipy 1.3 y versiones anteriores de scipy. #15661 por Thomas Fan.
sklearn.datasets¶
Feature
datasets.fetch_openmlahora soporta datos heterogéneos usando pandas estableciendoas_frame=True. #13902 por Thomas Fan.Feature
datasets.fetch_openmlahora incluye eltarget_namesen el Bunch devuelto. #15160 por Thomas Fan.Enhancement Se ha añadido el parámetro
return_X_yadatasets.fetch_20newsgroupsydatasets.fetch_olivetti_faces. #14259 por Sourav Singh.Enhancement
datasets.make_classificationahora acepta el parámetroweights, es decir, lista o numpy.array, en lugar de sólo lista. #14764 por Cat Chenal.- Enhancement El parámetro
normalizefue agregado a datasets.fetch_20newsgroups_vectorized. #14740 by Stéphan Tulkens
- Enhancement El parámetro
Fix Corregido un error en
datasets.fetch_openml, que fallaba al cargar un conjunto de datos OpenML que contenía una característica ignorada. #14623 por Sarra Habchi.
sklearn.decomposition¶
Efficiency
decomposition.NMF(solver='mu')ajustado en matrices de entrada dispersas ahora utiliza la agrupación para evitar asignar brevemente un arreglo con tamaño (#elementos distintos de cero, n_componentes). #15257 by Mart Willocx.Enhancement
decomposition.dict_learningydecomposition.dict_learning_onlineaceptan ahoramethod_max_itery lo pasan adecomposition.sparse_encode. #12650 por Adrin Jalali.Enhancement
decomposition.SparseCoder,decomposition.DictionaryLearning, ydecomposition.MiniBatchDictionaryLearningahora toman un parámetrotransform_max_itery lo pasan adecomposition.dict_learningodecomposition.sparse_encode. #12650 por Adrin Jalali.Enhancement
decomposition.IncrementalPCAahora acepta matrices dispersas como entrada, convirtiéndolas en densas por lotes evitando así la necesidad de almacenar toda la matriz densa de una vez. #13960 by Scott Gigante.Fix
decomposition.sparse_encodepasa ahora elmax_iterallinear_model.LassoLarssubyacente cuandoalgorithm='lasso_lars'. #12650 por Adrin Jalali.
sklearn.dummy¶
Fix
dummy.DummyClassifierahora maneja la comprobación de la existencia de la constante proporcionada en los casos de multi-salida. #14908 por Martina G. Vilas.API Change El valor por defecto del parámetro
strategyendummy.DummyClassifiercambiará de'estratificado'en la versión 0.22 a'previo'en la 0.24. Se genera un FutureWarning cuando se utiliza el valor por defecto. #15382 por Thomas Fan.API Change El atributo
outputs_2d_está obsoleto endummy.DummyClassifierydummy.DummyRegressor. Es equivalente an_outputs > 1. #14933 por Nicolas Hug
sklearn.ensemble¶
Major Feature Añadidos
ensemble.StackingClassifieryensemble.StackingRegressorpara apilar predictores usando un clasificador o regresor final. #11047 por Guillaume Lemaitre y Caio Oliveira y #15138 por Jon Cusick..Major Feature Se han realizado muchas mejoras en
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressor:Feature Los estimadores ahora soportan de forma nativa datos densos con valores perdidos tanto para el entrenamiento como para la predicción. También soportan valores infinitos. #13911 y #14406 por Nicolas Hug, Adrin Jalali y Olivier Grisel.
Feature Los estimadores tienen ahora un parámetro adicional
warm_startque permite el arranque en caliente. #14012 por Johann Faouzi.Feature
inspection.partial_dependenceyinspection.plot_partial_dependenceahora soportan el método rápido de “recursión” para ambos estimadores. #13769 por Nicolas Hug.Enhancement para
ensemble.HistGradientBoostingClassifierla pérdida o puntuación de entrenamiento se controla ahora en una submuestra estratificada por clases para preservar el equilibrio de clases del conjunto de entrenamiento original. #14194 por Johann Faouzi.Enhancement
ensemble.HistGradientBoostingRegressorahora soporta la pérdida “least_absolute_deviation”. #13896 por Nicolas Hug.Fix Los estimadores ahora colocan los datos de entrenamiento y validación por separado para evitar cualquier fuga de datos. #13933 por Nicolas Hug.
Fix Se ha corregido un error por el que la parada temprana se rompía con objetivos de cadena. #14710 por Guillaume Lemaitre.
Fix
ensemble.HistGradientBoostingClassifierahora da un error si se da la pérdidacategorical_crossentropypara un problema de clasificación binaria. #14869 por Adrin Jalali.
Ten en cuenta que los pickles de 0.21 no funcionarán en 0.22.
Enhancement Añadido el argumento
max_samplesque permite limitar el tamaño de las muestras de bootstrap para que sea menor que el tamaño del conjunto de datos. Añadido aensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor. #14682 por Matt Hancock y #5963 por Pablo Duboue.Fix
ensemble.VotingClassifier.predict_probaya no estará presente cuandovoting='hard'. #14287 por Thomas Fan.Fix El atributo
named_estimators_enensemble.VotingClassifieryensemble.VotingRegressorahora se asigna correctamente a los estimadores eliminados. Anteriormente, la asignación denamed_estimators_era incorrecta cuando uno de los estimadores era eliminado. #15375 por Thomas Fan.Fix Ejecutar por defecto
utils.estimator_checks.check_estimatortanto enensemble.VotingClassifiercomo enensemble.VotingRegressor. Esto lleva a resolver problemas relacionados con la consistencia de la forma durantepredict, que fallaba cuando los estimadores subyacentes no daban como resultado dimensiones de matriz consistentes. Tenga en cuenta que debe ser reemplazado por la refactorización de las pruebas comunes en el futuro. #14305 por Guillaume Lemaitre.Fix
ensemble.AdaBoostClassifiercalcula las probabilidades basadas en la función de decisión como en la literatura. Así,predictypredict_probadan resultados consistentes. #14114 por Guillaume Lemaitre.Fix Los estimadores de apilamiento y votación ahora aseguran que sus estimadores subyacentes son todos los clasificadores o todos los regresores.
ensemble.StackingClassifier,ensemble.StackingRegressor, yensemble.VotingClassifieryVotingRegressorahora lanzan mensajes de error consistentes. #15084 por Guillaume Lemaitre.Fix
ensemble.AdaBoostRegressordonde la pérdida debe ser normalizada por el máximo de las muestras con pesos no nulos solamente. #14294 por Guillaume Lemaitre.API Change
presortestá ahora obsoleto enensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressor, y el parámetro no tiene efecto. Se recomienda a los usuarios utilizarensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressoren su lugar. #14907 por Adrin Jalali.
sklearn.feature_extraction¶
Enhancement Ahora se lanzará una advertencia si la elección de un parámetro significa que otro parámetro no será utilizado al llamar al método fit() para
feature_extraction.text.HashingVectorizer,feature_extraction.text.CountVectorizeryfeature_extraction.text.TfidfVectorizer. #14602 por Gaurav Chawla.Fix Las funciones creadas por
build_preprocessorybuild_analyzerdefeature_extraction.text.VectorizerMixinahora pueden ser pickled. #14430 por Dillon Niederhut.Fix
feature_extraction.text.strip_accents_unicodeahora elimina correctamente los acentos de las cadenas que están en forma normalizada NFKD. #15100 por Daniel Grady.Fix Se ha corregido un error que provocaba que
feature_extraction.DictVectorizerlanzara unOverflowErrordurante la operación detransformaciónal producir una matrizscipy.sparseen datos de entrada grandes. #15463 por Norvan Sahiner.API Change Parámetro
copyobsoleto no utilizado parafeature_extraction.text.TfidfVectorizer.transformserá eliminado en la v0.24. #14520 por Guillem G. Subies.
sklearn.feature_selection¶
Enhancement Actualización de los siguientes estimadores
feature_selectionpara permitir valores NaN/Inf entransformaciónyfit:feature_selection.RFE,feature_selection.RFECV,feature_selection.SelectFromModel, yfeature_selection.VarianceThreshold. Tenga en cuenta que si el estimador subyacente del selector de características no permite NaN/Inf, seguirá dando errores, pero los propios selectores de características ya no imponen esta restricción innecesariamente. #11635 by Alec Peters.Fix Se ha corregido un error por el que
feature_selection.VarianceThresholdconthreshold=0no eliminaba las características constantes debido a la inestabilidad numérica, utilizando el rango en lugar de la varianza en este caso. #13704 por Roddy MacSween.
sklearn.gaussian_process¶
Feature Modelos de procesos gaussianos en datos estructurados:
gaussian_process.GaussianProcessRegressorygaussian_process.GaussianProcessClassifierahora pueden aceptar una lista de objetos genéricos (por ejemplo, cadenas, árboles, gráficos, etc.) como el argumentoXpara sus métodos de entrenamiento/predicción. Debe proporcionarse un núcleo definido por el usuario para calcular la matriz núcleo entre los objetos genéricos, y debe heredar degaussian_process.kernels.GenericKernelMixinpara notificar al modelo GPR/GPC que maneja muestras no vectoriales. #15557 por Yu-Hang Tang.Efficiency
gaussian_process.GaussianProcessClassifier.log_marginal_likelihoodygaussian_process.GaussianRegressor.log_marginal_likelihoodaceptan ahora un argumento de palabra claveclone_kernel=True. Cuando se establece enFalse, el atributo kernel se modifica, pero puede resultar en una mejora del rendimiento. #14378 by Masashi Shibata.API Change Desde la versión 0.24
gaussian_process.kernels.Kernel.get_paramslanzará unAttributeErroren lugar de devolverNonepara 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.impute¶
Major Feature Añadida
impute.KNNImputer, para imputar valores faltantes usando k-Nearest Neighbors. #12852 por Ashim Bhattarai y Thomas Fan y #15010 por Guillaume Lemaitre.Feature
impute.IterativeImputertiene una nueva banderaskip_computeque es False por defecto, la cual, cuando es True, omitirá el cálculo de las características que no tienen valores faltantes durante la fase de ajuste. #13773 por Sergey Feldman.Efficiency
impute.MissingIndicator.fit_transformevitar el cálculo repetido de la matriz enmascarada. #14356 por Harsh Soni.Fix
impute.IterativeImputerahora funciona cuando sólo hay una característica. Por Sergey Feldman.Fix Se ha corregido un error en
impute.IterativeImputerpor el que las características se imputaban en el orden inverso al deseado conimputation_orderya sea"ascendente"` o ``"descendente". #15393 por Venkatachalam N.
sklearn.inspection¶
Major Feature
inspection.permutation_importancese ha añadido para medir la importancia de cada característica en un modelo entrenado arbitrariamente con respecto a una función de puntuación dada. #13146 por Thomas Fan.Feature
inspection.partial_dependenceyinspection.plot_partial_dependencesoportan ahora el método de recursión rápida paraensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressor. #13769 por Nicolas Hug.característica.Enhancement
inspection.plot_partial_dependenceha sido extendida para soportar la nueva API de visualización descrita en el Manual de Usuario. #14646 por Thomas Fan.Enhancement
inspection.partial_dependenceacepta pandas DataFrame ypipeline.Pipelineque contienecompose.ColumnTransformer. Ademásinspection.plot_partial_dependenceutilizará los nombres de las columnas por defecto cuando se pase un dataframe. #14028 y #15429 de Guillaume Lemaitre.
sklearn.kernel_approximation¶
Fix Se ha corregido un error por el que
kernel_approximation.Nystroemdaba lugar a unKeyErroral usarkernel="precomputed". #14706 por Venkatachalam N.
sklearn.linear_model¶
Efficiency El solucionador de regresión logística “liblinear” es ahora más rápido y requiere menos memoria. #14108, #14170, #14296 by Alex Henrie.
Enhancement
linear_model.BayesianRidgeahora acepta los hiperparámetrosalpha_initylambda_initque pueden utilizarse para establecer el valor inicial del procedimiento de maximización en fit. #13618 por Yoshihiro Uchida.Fix
linear_model.Ridgeahora ajusta correctamente una intercepción cuandoXes dispersa,solver="auto"yfit_intercept=True, porque el solver por defecto en esta configuración ha cambiado asparse_cg, que puede ajustar una intercepción con datos dispersos. #13995 por Jérôme Dockès.Fix
linear_model.Ridgeconsolver='sag'ahora acepta arreglos ordenados en F y no contiguas y hace una conversión en lugar de fallar. #14458 por Guillaume Lemaitre.Fix
linear_model.LassoCVya no fuerzaprecompute=Falseal ajustar el modelo final. #14591 por Andreas Müller.Fix
linear_model.RidgeCVylinear_model.RidgeClassifierCVahora puntúan correctamente cuandocv=None. #14864 by Venkatachalam N.Fix Se ha corregido un error en
linear_model.LogisticRegressionCVpor el que el atributoscores_,n_iter_ycoefs_paths_tenían una ordenación errónea conpenalty='elastic-net'. #15044 por Nicolas HugFix
linear_model.MultiTaskLassoCVylinear_model.MultiTaskElasticNetCVcon X de tipo int yfit_intercept=True. #15086 by Alex Gramfort.Fix El solucionador liblinear ahora soporta
sample_weight. #15038 por Guillaume Lemaitre.
sklearn.manifold¶
Feature
manifold.Isomap,manifold.TSNE, ymanifold.SpectralEmbeddingahora aceptan el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Feature Expuesto el parámetro
n_jobsenmanifold.TSNEpara el cálculo multi-core del gráfico de vecinos. Este parámetro no tiene impacto cuandometric="precomputed"o (metric="euclidean"ymethod="exact"). #15082 by Roman Yurchak.Efficiency Mejorada la eficiencia de
manifold.TSNEcuandomethod="barnes-hut"calculando el gradiente en paralelo. #13213 por Thomas MoreauFix Se ha corregido un error por el que
manifold.spectral_embedding(y por tantomanifold.SpectralEmbeddingycluster.SpectralClustering) calculaba valores propios erróneos coneigen_solver='amg'cuandon_samples < 5 * n_components. #14647 por Andreas Müller.Fix Se ha corregido un error en
manifold.spectral_embeddingutilizado enmanifold.SpectralEmbeddingycluster. SpectralClusteringdondeeigen_solver="amg"a veces resultaba en un LinAlgError. #13393 por Andrew Knyazev #13707 por Scott WhiteAPI Change El atributo
training_data_obsoleto no utilizado enmanifold.Isomap. #10482 por Tom Dupre la Tour.
sklearn.metrics¶
Major Feature
metrics.plot_roc_curvese ha añadido para trazar curvas roc. Esta función introduce la API de visualización descrita en el Manual de Usuario. #14357 por Thomas Fan.Feature Se ha añadido un nuevo parámetro
división_ceroa múltiples métricas de clasificación:precision_score,recall_score,f1_score,fbeta_score,precision_recall_fscore_support,classification_report. Esto permite establecer el valor devuelto para métricas mal definidas. #14900 por Marc Torrellas Socastro.Feature Añadida la métrica
metrics.pairwise.nan_euclidean_distances, que calcula las distancias euclidianas en presencia de valores faltantes. #12852 por Ashim Bhattarai y Thomas Fan.Feature Se han añadido nuevas métricas de clasificación
metrics.ndcg_scoreymetrics.dcg_scorepara calcular la Ganancia Acumulativa Descontada y la Ganancia Acumulativa Descontada Normalizada. #9951 por Jérôme Dockès.Feature Se ha añadido
metrics.plot_precision_recall_curvepara trazar curvas de precisión y recuperación. #14936 por Thomas Fan.Feature Se ha añadido
metrics.plot_confusion_matrixpara trazar matrices de confusión. #15083 por Thomas Fan.Feature Añadido soporte multiclase a
metrics.roc_auc_scorecon los correspondientes scorers'roc_auc_ovr','roc_auc_ovo','roc_auc_ovr_weighted', y'roc_auc_ovo_weighted'. #12789 y #15274 por Kathy Chen, Mohamed Maskani, y Thomas Fan.Feature Añadir
metrics.mean_tweedie_devianceque mide la desviación de Tweedie para un parámetropowerdado. También añade la desviación media de Poissonmetrics.mean_poisson_deviancey la desviación media de Gammametrics.mean_gamma_devianceque son casos especiales de la desviación de Tweedie parapower=1ypower=2respectivamente. #13938 por Christian Lorentzen y Roman Yurchak.característica.Efficiency Mejora del rendimiento de
metrics.pairwise.manhattan_distancesen el caso de matrices dispersas. #15049 porPaolo Toccaceli <ptocca>.Enhancement El parámetro
betaenmetrics.fbeta_scorese ha actualizado para aceptar el valor cero yfloat('+inf'). #13231 por Dong-hee Na.Enhancement Añadido el parámetro
squaredenmetrics.mean_squared_errorpara devolver el error medio cuadrático. #13467 por Urvang Patel.Enhancement Permitir el cálculo de métricas promediadas en el caso de que no haya verdaderos positivos. #14595 por Andreas Müller.
Enhancement La métrica Multilabel ahora soporta listas de listas como entrada. #14865 Srivatsan Ramesh, Herilalaina Rakotoarison, Léonard Binet.
Enhancement
metrics.median_absolute_errorahora soporta el parámetromultioutput. #14732 por Agamemnon Krasoulis.Enhancement “roc_auc_ovr_weighted” y “roc_auc_ovo_weighted” se pueden utilizar ahora como el parámetro scoring de las herramientas de selección de modelos. #14417 por Thomas Fan.
Enhancement
metrics.confusion_matrixacepta un parámetronormalizeque permite normalizar la matriz de confusión por columnas, filas o en general. #15625 porGuillaume Lemaitre <glemaitre>.Fix Se produce un ValueError en
metrics.silhouette_scorecuando una matriz de distancia precalculada contiene entradas diagonales distintas de cero. #12258 por Stephen Tierney.API Change
scoring="neg_brier_score"debería usarse en lugar descoring="brier_score_loss"que ahora está obsoleto. #14898 por Stefan Matcovici.
sklearn.model_selection¶
Efficiency Mejora del rendimiento de la puntuación multimétrica en
model_selection.cross_validate,model_selection.GridSearchCVymodel_selection.RandomizedSearchCV. #14593 por Thomas Fan.Enhancement
model_selection.learning_curveahora acepta el parámetroreturn_timesque puede ser utilizado para recuperar los tiempos de cálculo con el fin de trazar la escalabilidad del modelo (ver ejemplo de learning_curve). #13938 por Hadrien Reboul.Enhancement
model_selection.RandomizedSearchCVacepta ahora listas de distribución de parámetros. #14549 by Andreas Müller.Fix Reimplementado
model_selection.StratifiedKFoldpara corregir un problema en el que un conjunto de pruebas podría sern_classesmayor que otro. Los conjuntos de pruebas ahora deben tener un tamaño casi igual. #14704 por Joel Nothman.Fix El atributo
cv_results_demodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVahora sólo contiene estimadores no ajustados. Esto ahorra potencialmente mucha memoria ya que el estado de los estimadores no se almacena. ##15096 por Andreas Müller.API Change
model_selection.KFoldymodel_selection.StratifiedKFoldahora lanzan una advertencia si se establecerandom_stateperoshufflees False. Esto generará un error en 0.24.
sklearn.multioutput¶
Fix
multioutput.MultiOutputClassifierahora tiene el atributoclasses_. #14629 por Agamemnon Krasoulis.Fix
multioutput.MultiOutputClassifierahora tienepredict_probacomo propiedad y se puede comprobar conhasattr. #15488 #15490 por Rebekah Kim
sklearn.naive_bayes¶
Major Feature Añadido
naive_bayes.CategoricalNBque implementa el clasificador Categorical Naive Bayes. #12569 por Tim Bicker y Florian Wilhelm.
sklearn.neighbors¶
Major Feature Se ha añadido
neighbors.KNeighborsTransformeryneighbors.RadiusNeighborsTransformer, que transforman el conjunto de datos de entrada en un gráfico de vecinos dispersos. Proporcionan un control más preciso de los cálculos de vecinos más cercanos y permiten un fácil almacenamiento en caché para su uso múltiple. #10482 por Tom Dupre la Tour.Feature |
Nighbors.KNeighborsClassifier,neighbors.KNeighborsRegressor,neighbors.RadiusNeighborsClassifier,neighbors.RadiusNeighborsRegressor, yneighbors.LocalOutlierFactoraceptan ahora el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Feature
neighbors.RadiusNeighborsClassifierahora soporta la predicción de probabilidades mediantepredict_probay soporta más opciones de outlier_label: “most_frequent”, o diferentes outlier_labels para multi-salidas. #9597 by Wenbo Zhao.Efficiency Mejoras en la eficiencia de
neighbors.RadiusNeighborsClassifier.predict. #9597 por Wenbo Zhao.Fix
neighbors.KNeighborsRegressorahora lanza un error cuandometric='precomputed'y se ajusta a datos no cuadrados. #14336 por Gregory Dexter.
sklearn.neural_network¶
Feature Añade el parámetro
max_funenneural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, yneural_network.MLPClassifierpara dar control sobre el número máximo de evaluación de funciones para no cumplir con la mejoratol. #9274 por Daniel Perry.
sklearn.pipeline¶
Enhancement
pipeline.Pipelineahora soporta score_samples si el estimador final lo hace. #13806 por Anaël Beaugnon.Fix El
fitenFeatureUnionahora aceptafit_paramspara pasar a los transformadores subyacentes. #15119 por Adrin Jalali.API Change
Nonecomo transformador está ahora obsoleto enpipeline.FeatureUnion. Por favor, utiliza'drop'en su lugar. #15053 por Thomas Fan.
sklearn.preprocessing¶
Efficiency
preprocessing.PolynomialFeatureses ahora más rápida cuando los datos de entrada son densos. #13290 por Xavier Dupré.Enhancement Evita la copia innecesaria de datos al ajustar los preprocesadores
preprocessing.StandardScaler,preprocessing.MinMaxScaler,preprocessing.MaxAbsScaler,preprocessing.RobustScalerypreprocessing.QuantileTransformerlo que supone una ligera mejora de rendimiento. #13987 por Roman Yurchak.Fix KernelCenterer ahora lanza un error cuando se ajusta a un no cuadrado
preprocessing.KernelCenterer#14336 por Gregory Dexter.
sklearn.model_selection¶
Fix
model_selection.GridSearchCVymodel_selection.RandomizedSearchCVsoportan ahora la propiedad _pairwise, que evita un error durante la validación cruzada para los estimadores con entradas pairwise (comoneighbors. KNeighborsClassifiercuando metric se establece como “precomputed”). #13925 por Isaac S. Robson y #15524 por Xun Tang.
sklearn.svm¶
Enhancement
svm.SVCysvm.NuSVCahora aceptan un parámetrobreak_ties. Este parámetro da como resultado que predict rompa los lazos de acuerdo con los valores de confianza de decision_function, ifdecision_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.NuSVRysvm. neClassSVMcuando se recibían valores negativos o cero para el parámetrosample_weighten 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_desvm.SVRysvm.OneClassSVMno 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_fitdonde n_SV=0 provoca un ZeroDivisionError. #14894 por Danna Naser.Fix El solucionador liblinear ahora soporta
sample_weight. #15038 por Guillaume Lemaitre.
sklearn.tree¶
Feature Añade una poda mínima de complejidad de costo, controlada por
ccp_alpha, atree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifier,tree.ExtraTreeRegressor,ensemble. andomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor,ensemble.GradientBoostingClassifier, yensemble.GradientBoostingRegressor. #12887 por Thomas Fan.API Change El parámetro
presortestá ahora obsoleto entree.DecisionTreeClassifierytree.DecisionTreeRegressor, y el parámetro no tiene efecto. #14907 por Adrin Jalali.API Change Los atributos
classes_yn_classes_detree.DecisionTreeRegressorestán ahora obsoletos. #15028 por Mei Guan, Nicolas Hug, y Adrin Jalali.
sklearn.utils¶
Feature
check_estimatorahora puede generar comprobaciones estableciendogenerate_only=True. Anteriormente, la ejecución decheck_estimatorse detenía cuando fallaba la primera comprobación. Congenerate_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.loguniformimplementa una variable aleatoria log-uniforme (por ejemplo, para su uso en RandomizedSearchCV). Por ejemplo, los resultados1,10y100son todos igualmente probables paraloguniform(1, 100). Ver #11232 de Scott Sievert y Nathaniel Saul, ySciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>.Enhancement
utils.safe_indexing(ahora obsoleto) acepta un parámetroaxispara 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_dotfunciona entre 3D+ ndarray y matriz dispersa. #14538 por Jérémie du Boisberranger.Fix
utils.check_arrayahora genera un error en lugar de convertir NaN en entero. #14872 por Roman Yurchak.Fix
utils.check_arraydetectará ahora correctamente los tipos de datos numéricos en los dataframes de pandas, corrigiendo un error por el quefloat32se convertía enfloat64innecesariamente. #15094 por Andreas Müller.API Change Las siguientes utils ya son obsoletas y ahora son privadas:
choose_check_classifiers_labelsenforce_estimator_tags_ymocking.MockDataFramemocking.CheckingClassifieroptimize.newton_cgrandom.random_choice_cscutils.choose_check_classifiers_labelsutils.enforce_estimator_tags_yutils.optimize.newton_cgutils.random.random_choice_cscutils.safe_indexingutils.mockingutils.fast_dictutils.seq_datasetutils.weight_vectorutils.fixes.parallel_helper(eliminado)Todos los
utils.testingexceptoall_estimatorsque ahora está enutils.
sklearn.isotonic¶
Fix Se ha corregido un error por el que
isotonic.IsotonicRegression.fitdaba lugar a un error cuandoX.dtype == 'float32'yX.dtype != y.dtype. #14902 por Lucas.
Varios¶
Fix Port
lobpcgde 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
NotFittedErrorsi se llama apredictotransformantes defit; antes se aceptaba unAttributeErroroValueError. #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) ennumpy.ndarrayy 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 porutils.estimator_checks.check_estimatorpara 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_multioutputycheck_regressor_multioutput. #13392 por Rok Mihevc.Fix Agregado
check_transformer_data_not_an_arraya las comprobaciones donde faltanFix 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