Versión 0.19¶
Julio, 2018
Esta versión está destinada exclusivamente a soportar Python 3.7.
Versión 0.19.1¶
23 de octubre de 2017
Esta es una versión de corrección de errores con algunas mejoras menores de documentación y mejoras a las características publicadas en 0.19.0.
Tenga en cuenta que puede haber diferencias menores en la salida TSNE en esta versión (debido a #9623), en el caso en que múltiples muestras tengan la misma distancia a alguna muestra.
Registro de cambios¶
Cambios del API¶
Se revirtió la adición de
metrics.ndcg_scoreymetrics.dcg_scoreque habían sido fusionados en la versión 0.19.0 por error. Las implementaciones tenían fallos y no estaban documentadas.return_train_scoreque se añadió amodel_selection.GridSearchCV,model_selection.RandomizedSearchCVymodel_selection.cross_validateen la versión 0.19.0 cambiará su valor por defecto de True a False en la versión 0.21. Hemos descubierto que el cálculo de la puntuación de entrenamiento podría tener un gran efecto en el tiempo de ejecución de la validación cruzada en algunos casos. Los usuarios deben establecer explícitamentereturn_train_scorea False si las funciones de predicción o puntuación son lentas, lo que tiene un efecto perjudicial en el tiempo de ejecución de la CV, o a True si desean utilizar las puntuaciones calculadas. #9677 por Kumar Ashutosh y Joel Nothman.correlation_modelsyregression_modelsde anteriores implementaciones de procesos gaussianos han quedado obsoletos tardíamente. #9717 por Kumar Ashutosh.
Corrección de errores¶
Evita desbordamientos de enteros en
metrics.matthews_corrcoef. #9693 por Sam Steingold.Se ha corregido un error en la función objetivo de
múltiple. SNE(tanto exacta como con la aproximación de Barnes-Hut) cuandon_components >= 3. #9711 por @goncalo-rodrigues.Corrige la regresión en
model_selection.cross_val_predictdonde se reportó un error conmethod='predict_proba'para algunos clasificadores probabilísticos. #9641 por James Bourbeau.Se ha corregido un error donde
datasets.make_classificationmodificó su entradaweights. #9865 por Sachin Kelkar.model_selection.StratifiedShuffleSplitahora funciona con datos de múltiples salidas, multiclase o multietiqueta con más de 1000 columnas. #9922 por Charlie Brummitt.Se ha corregido un error con la configuración de parámetros anidados y condicionales, por ejemplo, al asignar un paso del pipeline y su parámetro al mismo tiempo. #9945 por Andreas Müller y Joel Nothman.
Regresiones en 0.19.0 corregidas en 0.19.1:
Se ha corregido un error por el que la predicción paralela en los bosques aleatorios no era segura para los hilos y podía (raramente) dar lugar a errores arbitrarios. #9830 por Joel Nothman.
Corrige la regresión en
model_selection.cross_val_predictdonde ya no aceptabaXcomo lista. #9600 por Rasul Kerimov.Se ha corregido el manejo de
cross_val_predictpara la clasificación binaria conmethod='decision_function'. #9593 por Reiichiro Nakano y los desarrolladores principales.Corrige la regresión en
pipeline.Pipelinedonde ya no aceptabastepscomo tupla. #9604 por Joris Van den Bossche.Se ha corregido un error por el que
n_iterno estaba correctamente obsoleto, lo que hacía quen_iterno estuviera disponible para su uso provisional enlinear_model.SGDClassifier,linear_model. SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorylinear_model.Perceptron. #9558 por Andreas Müller.Los recuperadores de conjuntos de datos se aseguran de cerrar los archivos temporales antes de eliminarlos, lo que provocaba errores en Windows. #9847 por Joan Massich.
Se ha corregido una regresión en
manifold.TSNEpor la que ya no soportaba métricas distintas de “euclidian” y “precomputed”. #9623 por Oli Blum.
Mejoras¶
Nuestro conjunto de pruebas y
utils.estimator_checks.check_estimatorsahora pueden ejecutarse sin Nose instalado. #9697 por Joan Massich.Para mejorar la usabilidad del almacenamiento en caché
pipeline.Pipelinede la versión 0.19,memorypermite ahora instancias dejoblib.Memory. Para ello se utiliza la nuevautils.validation.check_memoryhelper. issue:9584by Kumar AshutoshSe ha hecho menos detallado el FutureWarning en los estimadores basados en SGD. #9802 por Vrishank Bhardwaj.
Colaboradores de código y documentación¶
Con agradecimiento a:
Joel Nothman, Loic Esteve, Andreas Mueller, Kumar Ashutosh, Vrishank Bhardwaj, Hanmin Qin, Rasul Kerimov, James Bourbeau, Nagarjuna Kumar, Nathaniel Saul, Olivier Grisel, Roman Yurchak, Reiichiro Nakano, Sachin Kelkar, Sam Steingold, Yaroslav Halchenko, diegodlh, felix, goncalo-rodrigues, jkleint, oliblum90, pasbi, Anthony Gitter, Ben Lawson, Charlie Brummitt, Didi Bar-Zev, Gael Varoquaux, Joan Massich, Joris Van den Bossche, nielsenmarkus11
Versión 0.19¶
12 de agosto de 2017
Destacados¶
Estamos muy contentos de lanzar una serie de nuevas características, incluyendo neighbors.LocalOutlierFactor para la detección de anomalías, preprocessing.QuantileTransformer para la transformación robusta de características, y el metaestimador multioutput.ClassifierChain para tener en cuenta de forma sencilla las dependencias entre las clases en los problemas multietiqueta. Tenemos algunos algoritmos nuevos en los estimadores existentes, como la actualización multiplicativa en decomposition.NMF y la linear_model.LogisticRegression multinomial con pérdida L1 (utiliza solver='saga').
La validación cruzada es ahora capaz de devolver los resultados de múltiples evaluaciones métricas. La nueva model_selection.cross_validate puede devolver muchas puntuaciones en los datos de prueba, así como el rendimiento y los tiempos del conjunto de entrenamiento, y hemos ampliado los parámetros scoring y refit para la búsqueda en cuadrícula/aleatorizada para manejar métricas múltiples.
También puedes aprender más rápido. Por ejemplo, la nueva opción a las transformaciones de caché en pipeline.Pipeline hace la búsqueda en cuadrícula sobre pipelines incluyendo transformaciones lentas mucho más eficiente. Y puedes predecir más rápido: si estás seguro de lo que estás haciendo, puedes desactivar validando que la entrada es finita usando config_context.
También hemos realizado algunas correcciones importantes. Hemos solucionado un antiguo error de implementación en metrics.average_precision_score, así que tenga cuidado con los resultados anteriores reportados por esa función. Se han corregido varios errores en la implementación de manifold.TSNE, especialmente en la aproximación por defecto de Barnes-Hut. Se han corregido sustancialmente semi_supervised.LabelSpreading y semi_supervised.LabelPropagation. LabelPropagation no funcionaba antes. LabelSpreading debería ahora respetar correctamente su parámetro alfa.
Modelos modificados¶
Los siguientes estimadores y funciones, cuando ajustan a los mismos datos y parámetros, pueden producir diferentes modelos que en la versión anterior. Esto ocurre a menudo debido a cambios en la lógica de modelado (correcciones de errores o mejoras), o en procedimientos de muestreo aleatorio.
cluster.KMeanscon X disperso y centroides iniciales dados (corrección de errores)cross_decomposition.PLSRegressionconscale=True(corrección de errores)ensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressordondemin_impurity_splites usado (corrección de errores)potenciación de gradiente
loss='quantile'(corrección de errores)ensemble.IsolationForest(corrección de errores)feature_selection.SelectFdr(corrección de errores)linear_model.RANSACRegressor(corrección de errores)linear_model.LassoLars(corrección de errores)linear_model.LassoLarsIC(corrección de errores)manifold.TSNE(corrección de errores)neighbors.NearestCentroid(corrección de errores)semi_supervised.LabelSpreading(corrección de errores)semi_supervised.LabelPropagation(corrección de errores)modelos basados en árboles donde se utiliza
min_weight_fraction_leaf(mejora)model_selection.StratifiedKFoldconshuffle=True(este cambio, debido a #7823 no fue mencionado en las notas de lanzamiento en ese momento)
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¶
Nuevas características¶
Clasificadores y regresores
Se añadió
multioutput.ClassifierChainpara clasificación multietiqueta. Por Adam Kleczewski.Añadido el solucionador
'sagaque implementa la versión mejorada del Gradiente Promedio Estocástico, enlinear_model.LogisticRegressionylinear_model.Ridge. Permite el uso de la penalización L1 con pérdida logística multinomial, y se comporta marginalmente mejor quesagdurante los primeros epochs de la regresión de cresta y logística. #8446 por Arthur Mensch.
Otros Estimadores
Se ha añadido la clase
neighbors.LocalOutlierFactorpara detección de anomalías basada en vecinos más cercanos. #5279 por Nicolas Goix y Alexandre Gramfort.Se añadió la clase
preprocessing.QuantileTransformery la funciónpreprocessing.quantile_transformpara normalizar características basadas en cuantiles. #8363 por Denis Engemann, Guillaume Lemaitre, Olivier Grisel, Raghav RV, Thierry Guillemot, y Gael Varoquaux.El nuevo solucionador
'mu'implementa una Actualización Multiplicada endescomposición. MF, permitiendo la optimización de todas las beta-divergencias, incluyendo la norma Frobenius, la divergencia Kullback-Leibler generalizada y la divergencia Itakura-Saito. #5295 por Tom Dupre la Tour.
Selección y evaluación de modelos
model_selection.GridSearchCVymodel_selection.RandomizedSearchCVahora soportan la evaluación simultánea de múltiples métricas. Consulta la sección Especificar múltiples métricas para la evaluación del manual del usuario para más información. #7388 por Raghav RVSe añadió
model_selection.cross_validateque permite la evaluación de múltiples métricas. Esta función devuelve un dict con información más útil de la validación cruzada como las puntuaciones de entrenamiento, los tiempos de ajuste y los tiempos de puntuación. Consulte la sección La función cross_validate y la evaluación de métricas múltiples del manual del usuario para más información. #7388 por Raghav RVSe añadió
metrics.mean_squared_log_error, que calcula el error cuadrático medio de la transformación logarítmica de los objetivos, particularmente útil para objetivos con una tendencia exponencial. #7655 por Karan Desai.Se añadieron
metrics.dcg_scoreymetrics.ndcg_score, que calculan la ganancia acumulativa descontada (DCG) y la ganancia acumulativa descontada normalizada (NDCG). #7739 por David Gasquez.Se añadieron
model_selection.RepeatedKFoldymodel_selection.RepeatedStratifiedKFold. #8120 por Neeraj Gangwar.
Misceláneos
La validación de que los datos de entrada no contengan NaN o inf ahora puede ser suprimida usando
config_context, bajo tu propio riesgo. Esto ahorrará en tiempo de ejecución, y puede ser particularmente útil para el tiempo de predicción. #7548 por Joel Nothman.Se ha añadido una prueba para asegurar que la lista de parámetros en docstrings coincide con la firma de función/clase. #9206 por Alexandre Gramfort y Raghav RV.
Mejoras¶
Árboles y ensembles
La restricción
min_weight_fraction_leafen la construcción del árbol es ahora más eficiente, tomando una ruta rápido para declarar un nodo como hoja si su peso es inferior a 2 * el mínimo. Tenga en cuenta que el árbol construido será diferente de las versiones anteriores donde se utilizamin_weight_fraction_leaf. #7441 por Nelson Liu.ensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressorahora soportan entradas dispersas para predicción. #6101 de Ibraim Ganiev.ensemble.VotingClassifierahora permite cambiar estimadores usandoensemble.VotingClassifier.set_params. Un estimador también puede ser eliminado asignándoleNone. #7674 por Yichuan Liu.tree.export_graphvizahora muestra el número configurable de decimales. #8698 por Guillaume Lemaitre.Se añadió el parámetro
flatten_transformaensemble.VotingClassifierpara cambiar la forma de salida del métodotransforma 2 dimensional. #7794 por Ibraim Ganiev y Herilalaina Rakotoarison.
Modelos lineales, kernelizados y relacionados
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorylinear_model.Perceptronahora exponen los parámetrosmax_iterytol, para manejar la convergencia con mayor precisión. El parámetron_iterestá obsoleto, y el estimador ajustado expone un atributon_iter_, con el número real de iteraciones antes de la convergencia. #5036 por Tom Dupre la Tour.Se añadió el parámetro
averagepara realizar el promedio de peso enlinear_model.PassiveAggressiveClassifier. #4939 por Andrea Esuli.linear_model.RANSACRegressorya no lanza un error al llamar afitsi no se encuentran valores típicos en su primera iteración. Además, las causas de las iteraciones saltadas son rastreadas en atributos añadidos recientemente,n_skips_*. #7914 por Michael Horrell.En
gaussian_process.GaussianProcessRegressor, el métodopredictes mucho más rápido conreturn_std=True. #8591 por Hadrien Bertrand.Se añadió
return_stdal métodopredictdelinear_model.ARDRegressionylinear_model.BayesianRidge. #7838 de Sergey Feldman.Mejoras en el uso de la memoria: Evita la conversión desde float32 a float64 en:
linear_model.MultiTaskElasticNet;linear_model.LogisticRegressioncuando se utiliza el método de solución newton-cg; ylinear_model.Ridgeal usar los solucionadores svd, sparse_cg, cholesky o lsqr. #8835, #8061 por Joan Massich y Nicolas Cordier y Thierry Guillemot.
Otros predictores
Las métricas personalizadas para los árboles binarios
vecinosahora tienen menos restricciones: deben tomar dos arreglos 1d y devolver un float. #6288 por Jake Vanderplas.algorithm='autoen estimadores devecinosahora eligen el algoritmo más apropiado para todos los tipos de entrada y métricas. #9145 por Herilalaina Rakotoarison y Reddy Chinthala.
Descomposición, aprendizaje múltiple y análisis de conglomerados
cluster.MiniBatchKMeansycluster.KMeansahora usan significativamente menos memoria al asignar puntos de datos al centro de su conglomerado más cercano. #7721 por Jon Crall.decomposition.PCA,decomposition.IncrementalPCAydecomposition.TruncatedSVDahora exponen los valores singulares del SVD subyacente. Se almacenan en el atributosingular_values_, como endecomposition.IncrementalPCA. #7685 por Tommy Löfstedtdecomposition.NMFahora es más rápido cuandobeta_loss=0. #9277 por @hongkahjun.Mejoras de memoria para el método
barnes_hutenmanifold.TSNE#7089 por Thomas Moreau y Olivier Grisel.Mejoras en el programa de optimización de Barnes-Hut
manifold.TSNEpara que los resultados se acerquen más a los de la implementación de referencia lvdmaaten/bhtsne de Thomas Moreau y Olivier Grisel.Mejoras en el uso de la memoria: Evita la conversión de float32 a float64 en
decomposition.PCAydecomposition.randomized_svd_low_rank. #9067 por Raghav RV.
Preprocesamiento y selección de características
Se añadió el parámetro
norm_orderafeature_selection.SelectFromModelpara habilitar la selección del orden de la norma cuandocoef_es superior a 1D. #6181 por Antoine Wendlinger.Se ha añadido la habilidad de usar matrices dispersas en
feature_selection.f_regressionconcenter=True. #8065 por Daniel LeJeune.Pequeña mejora de rendimiento en la creación de n-gramas en
feature_extraction.textmediante métodos de enlace para bucles y unigramas de casos especiales. #7567 por Jaye DoepkeRelaja la suposición sobre los datos para el
kernel_approximation.SkewedChi2Sampler. Dado que el núcleo Skewed-Chi2 se define en el intervalo abierto \((-skewedness; +\infty)^d\), la función de transformación no debería comprobar siX < 0sino siX < -self.skewedness. #7573 por Romain Brault.Se han hecho los parámetros del núcleo por defecto dependientes del núcleo en
kernel_approximation.Nystroem. #5229 por Saurabh Bansod y Andreas Müller.
Evaluación del modelo y metaestimadores
pipeline.Pipelineahora es capaz de almacenar en caché los transformadores dentro de una tubería usando el parámetro del constructormemory. #7990 por Guillaume Lemaitre.Los pasos de
pipeline.Pipelineahora pueden ser accedidos como atributos de su atributonamed_steps. #8586 por Herilalaina Rakotoarison.Se añadió el parámetro
sample_weightapipeline.Pipeline.score. #7723 por Mikhail Korobov.Se ha añadido la capacidad de asignar el parámetro
n_jobsapipeline.make_union. Se elevará unTypeErrorpara cualquier otro argumento de palabra clave. #8028 por Alexander Booth.model_selection.GridSearchCV,model_selection.RandomizedSearchCVymodel_selection.cross_val_scoreahora permiten estimadores con núcleos invocables lo cual estaba previamente prohibido. #8005 por Andreas Muller .model_selection.cross_val_predictahora devuelve la salida de forma correcta para todos los valores del argumentomethod. #7863 por Aman Dalmia.Se añadieron los parámetros
shuffleyrandom_statepara revolver los datos de entrenamiento antes de tomar prefijos basados en tamaños de entrenamiento enmodel_selection.learning_curve. #7506 por Narine Kokhlikyan.model_selection.StratifiedShuffleSplitahora funciona con datos de múltiples salidas multiclase (o multietiqueta). #9044 by Vlad Niculae.Mejoras de velocidad en
model_selection.StratifiedShuffleSplit. #5991 por Arthur Mensch y Joel Nothman.Añade el parámetro
shuffleamodel_selection.train_test_split. #8845 por themrmaxmultioutput.MultiOutputRegressorymultioutput.MultiOutputClassifierahora soportan el aprendizaje en línea usandopartial_fit. :issue:8053de Peng Yu.Se añade el parámetro
max_train_sizeamodel_selection.TimeSeriesSplit#8282 por Aman Dalmia.Ahora hay más métricas de análisis de conglomerados disponibles a través de los parámetros
metrics.get_scoreryscoring. #8117 de Raghav RV.También está disponible un puntuador basado en
metrics.explained_variance_score. #9259 por Hanmin Qin.
Métricas
metrics.matthews_corrcoefahora soporta la clasificación multiclase. #8094 por Jon Crall.Se añade el parámetro
sample_weightametrics.cohen_kappa_score. #8335 por Victor Poughon.
Misceláneos
utils.check_estimatorahora intenta asegurar que los métodos transform, predict, etc. no establecen atributos en el estimador. #7533 por Ekaterina Krivich.Se ha añadido la comprobación de tipo al parámetro
accept_sparseen los métodos deutils.validation. Este parámetro ahora sólo acepta booleanos, cadenas o listas/tuplas de cadenas.accept_sparse=Noneestá obsoleto y debe ser sustituido poraccept_sparse=False. #7880 por Josh Karnofsky.Se posibilita la carga de una porción de un archivo con formato svmlight pasando un rango de bytes a
datasets.load_svmlight_file. #935 por Olivier Grisel.dummy.DummyClassifierydummy.DummyRegressorahora aceptan características no finitas. #8931 por @Attractadore.
Corrección de errores¶
Árboles y ensembles
Se ha corregido una fuga de memoria en los árboles cuando se utilizan árboles con
criterion='mae'. #8002 por Raghav RV.Se ha corregido un error por el que
ensemble.IsolationForestutiliza una fórmula incorrecta para la longitud promedio de la trayectoria #8549 de Peter Wang.Se ha corregido un error por el que
ensemble.AdaBoostClassifiergeneraZeroDivisionErroral ajustar datos con etiquetas de una sola clase. #7501 por Dominik Krzeminski.Se ha corregido un error en
ensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressorpor el que un número de punto flotante (float) que se comparaba con0.0utilizando ``==` provocaba un error de división por cero. #7970 por He Chen.Se corrige un error por el que
ensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressorignoraban el parámetromin_impurity_split. #8006 por Sebastian Pölsterl.Se ha corregido
oob_scoreenensemble.BaggingClassifier. #8936 por Michael Lewis.Se ha corregido el uso excesivo de memoria en la predicción de los estimadores de bosques aleatorios. #8672 por Mike Benfield.
Se ha corregido un error por el que
sample_weightcomo lista rompía los bosques aleatorios en Python 2 #8068 por @xor.Se ha corregido un error por el que
ensemble.IsolationForestfalla cuandomax_featureses menor que 1. #5732 por Ishank Gulati.Se corrige un error por el que la potenciación del gradiente con
loss='quantile'calculaba errores negativos para valores negativos deytrue - ypredlo que conducía a valores erróneos al llamar a__call__. #8087 por Alexis Mignon.Se corrige un error por el que
ensemble.VotingClassifiergenera un error cuando se pasa un arreglo numpy para las ponderaciones. #7983 por Vincent Pham.Se ha corregido un error por el que
tree.export_graphvizgeneraba un error cuando la longitud de features_names no coincidía con n_features en el árbol de decisión. #8512 por Li Li.
Modelos lineales, kernelizados y relacionados
Se ha corregido un error por el que
linear_model.RANSACRegressor.fitpodía ejecutarse hastamax_itersi encontraba un grupo grande de valores típicos de forma anticipada. #8251 por @aivision2020.Se ha corregido un error por el que
naive_bayes.MultinomialNBynaive_bayes.BernoulliNBfallaban cuandoalpha=0. #5814 por Yichuan Liu y Herilalaina Rakotoarison.Se ha corregido un error por el que
linear_model.LassoLarsno daba el mismo resultado que la implementación de LassoLars disponible en R (biblioteca lars). #7849 por Jair Montoya Martinez.Se ha corregido un error en
linear_model.RandomizedLasso,linear_model.Lars,linear_model.LassoLars,linear_model.LarsCVylinear_model.LassoLarsCV, donde el parámetroprecomputeno se utilizaba de forma consistente en todas las clases, y algunos valores propuestos en la cadena de documentación podían generar errores. #5359 por Tom Dupre la Tour.Se corrigen resultados inconsistentes entre
linear_model.RidgeCVylinear_model.Ridgecuando se utilizanormalize=True. #9302 por Alexandre Gramfort.Se corrige un error por el que
linear_model.LassoLars.fita veces dejabacoef_como una lista, en lugar de un ndarray. #8160 por CJ Carey.Se corrige
linear_model.BayesianRidge.fitpara que devuelva el parámetro de cresta (ridge)alpha_ylambda_consistentes con los coeficientes calculadoscoef_eintercept_. #8224 por Peter Gedeck.Se ha corregido un error en
svm.OneClassSVMpor el que devolvía números de punto flotante (floats) en lugar de clases enteras. #8676 por Vathsala Achar.Se corrige el cálculo del criterio AIC/BIC en
linear_model.LassoLarsIC. #9022 por Alexandre Gramfort y Mehmet Basbug.Se ha corregido una fuga de memoria en nuestra implementación de LibLinear. #9024 por Sergei Lebedev.
Se corrige un error por el que los separadores de CV estratificados no funcionaban con
linear_model.LassoCV. #8973 por Paulo Haddad.Se ha corregido un error en
gaussian_process.GaussianProcessRegressorcuando la desviación estándar y la covarianza predichas sin ajuste fallaban con un error no significativo por defecto. #6573 por Quazi Marufur Rahman y Manoj Kumar.
Otros predictores
Se corrige
semi_supervised.BaseLabelPropagationpara implementar correctamenteLabelPropagationyLabelSpreadingcomo se hace en los artículos referenciados. #9239 por Andre Ambrosio Boechat, Utkarsh Upadhyay y Joel Nothman.
Descomposición, aprendizaje múltiple y análisis de conglomerados
Se ha corregido la implementación de
manifold.TSNE:El parámetro
early_exagerationno tenía efecto y ahora se utiliza para las primeras 250 iteraciones de optimización.Se ha corregido la excepción
AssertionError: Tree consistency failed, reportada en #8992.Se mejora el programa de aprendizaje para que coincida con el de la implementación de referencia lvdmaaten/bhtsne. Por Thomas Moreau y Olivier Grisel.
Se corrige un error en
decomposition.LatentDirichletAllocationpor el que el métodoperplexitydevolvía resultados incorrectos porque el métodotransformdevuelve distribuciones de temas de documentos normalizadas a partir de la versión 0.18. #7954 por Gary Foreman.Se corrige la forma de salida y los errores con n_jobs > 1 en la transformación
decomposition.SparseCoderydecomposition.sparse_encodepara datos unidimensionales y un componente. Esto también afecta a la forma de salida dedecomposition.DictionaryLearning. #8086 por Andreas Müller.Se ha corregido la implementación de
explained_variance_endecomposition.PCA,decomposition.RandomizedPCAydecomposition.IncrementalPCA. #9105 por Hanmin Qin.Se ha corregido la implementación de
noise_variance_endecomposition.PCA. #9108 por Hanmin Qin.Se ha corregido un error por el que
cluster.DBSCANdaba un resultado incorrecto cuando la entrada era una matriz dispersa precalculada con filas iniciales todas en cero. #8306 por Akshay Gupta.Se corrige un error relacionado con el ajuste de
cluster.KMeanscon una matriz dispersa X y centroides iniciales, donde las medias de X se restaban innecesariamente de los centroides. #7872 por Josh Karnofsky.Se hacen correcciones a la validación de entradas en
covariance.EllipticEnvelope. #8086 por Andreas Müller.Se ha corregido un error en
covariance.MinCovDetpor el que la introducción de datos que producía una matriz de covarianzas singular provocaba que el método ayudante_c_steplanzara una excepción. #3367 por Jeremy Steward.Se ha corregido un error en
manifold.TSNEque afectaba a la convergencia del descenso de gradiente. #8768 por David DeTomaso.Se ha corregido un error en
manifold.TSNEdonde se almacenaba lakl_divergence_incorrecta. #6507 por Sebastian Saeger.Se ha corregido el escalamiento incorrecto en
cross_decomposition.PLSRegressionconscale=True. #7819 por jayzed82.El método
fitdecluster.bicluster.SpectralCoclusteringycluster.bicluster.SpectralBiclusteringse ajusta a la API aceptandoyy devolviendo el objeto. #6126, #7814 por Laurent Direr y Maniteja Nandana.Se corrige un error por el que los métodos
sampledemixtureno devolvían tantas muestras como se pedía. #7702 por Levi John Wolf.Se ha corregido la implementación de la contracción en
neighbors.NearestCentroid. #9219 por Hanmin Qin.
Preprocesamiento y selección de características
Para las matrices dispersas,
preprocessing.normalizeconreturn_norm=Trueahora lanzará unNotImplementedErrorcon norma “l1” o “l2” y con norma “max” las normas devueltas serán las mismas que para las matrices densas. #7771 por Ang Lu.Se corrige un error por el que
feature_selection.SelectFdrno implementaba exactamente el procedimiento Benjamini-Hochberg. Es posible que antes haya seleccionado menos características de las que debería. #7490 por Peng Meng.Se ha corregido un error por el que
linear_model.RandomizedLassoylinear_model.RandomizedLogisticRegressionse rompían para entradas dispersas. #8259 por Aman Dalmia.Se corrige un error por el que
feature_extraction.FeatureHasheraplicaba obligatoriamente una proyección aleatoria dispersa a las características mapeadas (hashed), impidiendo el uso defeature_extraction.text.HashingVectorizeren un pipeline confeature_extraction.text.TfidfTransformer. #7565 por Roman Yurchak.Se corrige un error por el que
feature_selection.mutual_info_regressionno utilizaba correctamenten_neighbors. #8181 por Guillaume Lemaitre.
Evaluación del modelo y metaestimadores
Se ha corregido un error por el que
model_selection.BaseSearchCV.inverse_transformdevolvíaself.best_estimator_.transform()en lugar deself.best_estimator_.inverse_transform(). #8344 por Akshay Gupta y Rasmus Eriksson.Se ha añadido el atributo
classes_amodel_selection.GridSearchCV,model_selection.RandomizedSearchCV,grid_search.GridSearchCVygrid_search.RandomizedSearchCVque coincide con el atributoclasses_debest_estimator_. #7661 y #8295 por Alyssa Batula, Dylan Werner-Meier y Stephen Hoover.Se ha corregido un error por el que
model_selection.validation_curvereutilizaba el mismo estimador para cada valor de parámetro. #7365 por Aleksandr Sandrovskii.model_selection.permutation_test_scoreahora funciona con los tipos de Pandas. #5697 por Stijn Tonk.Varias correcciones a la validación de entradas en
multiclass.OutputCodeClassifier#8086 por Andreas Müller.multiclass.OneVsOneClassifierdepartial_fitahora asegura que todas las clases sean proporcionadas por adelantado. #6250 por Asish Panda.Se corrige
multioutput.MultiOutputClassifier.predict_probapara que devuelva una lista de arreglos 2D, en lugar de un arreglo 3D. En el caso de que diferentes columnas objetivo tuvieran diferentes números de clases, se produciría unValueErroral intentar apilar matrices con diferentes dimensiones. #8093 por Peter Bull.La validación cruzada ahora funciona con los tipos de datos de Pandas que tienen un índice de sólo lectura. #9507 por Loic Esteve.
Métricas
metrics.average_precision_scoreya no interpola linealmente entre puntos de operación, y en su lugar pondera las precisiones por el cambio en la exhaustividad desde el último punto de operación, según la entrada de la Wikipedia. (#7356). Por Nick Dingwall y Gael Varoquaux.Se corrige un error en
metrics.classification._check_targetsque devolvía'binary'siy_trueyy_prederan ambos'binary'pero la unión dey_trueyy_predera'multiclass'. #8377 por Loic Esteve.Se ha corregido un error de desbordamiento de enteros en
metrics.confusion_matrixy, por tanto, enmetrics.cohen_kappa_score. #8354, #7929 por Joel Nothman y Jon Crall.Se ha corregido el paso del parámetro
gammaal kernelchi2enmetrics.pairwise.pairwise_kernels#5211 por Nick Rhinehart, Saurabh Bansod y Andreas Müller.
Misceláneos
Se ha corregido un error cuando
datasets.make_classificationfalla al generar más de 30 características. #8159 por Herilalaina Rakotoarison.Se ha corregido un error por el que
datasets.make_moonsda un resultado incorrecto cuandon_sampleses impar. #8198 por Josh Levy.Algunas funciones
fetch_endatasetsignoraban la palabra clavedownload_if_missing. #7944 por Ralf Gommers.Se corrigen los estimadores para que acepten un parámetro
sample_weightde tipopandas.Seriesen su funciónfit. #7825 by Kathleen Chen.Se corrige un error en los casos donde
numpy.cumsumpuede ser numéricamente inestable, lanzando una excepción si se identifica la inestabilidad. #7376 y #7331 por Joel Nothman y @yangarbiter.Se corrige un error por el que
base.BaseEstimator.__getstate__obstruía las personalizaciones de pickling de las clases hijas, cuando se utilizaba en un contexto de herencia múltiple. #8316 por Holger Peters.Se actualiza Sphinx-Gallery de 0.1.4 a 0.1.7 para resolver los enlaces en la construcción de la documentación con Sphinx>1.5 #8010, #7986 por Oscar Najera.
Se añade el parámetro
data_homeasklearn.datasets.fetch_kddcup99. #9289 por Loic Esteve.Se corrigen los cargadores de conjuntos de datos que utilizan la versión Python 3 de makedirs para que también funcionen en Python 2. #9284 por Sebastin Santy.
Se han corregido varios problemas menores gracias a las alertas de lgtm.com. #9278 por Jean Helie, entre otros.
Resumen de cambios en la API¶
Árboles y ensembles
Los modelos base de potenciación del gradiente ya no son estimadores. Por Andreas Müller.
Todos los estimadores basados en árboles ahora aceptan el parámetro
min_impurity_decreaseen lugar demin_impurity_split, que ya está obsoleto. El parámetromin_impurity_decreaseayuda a dejar de dividir los nodos en los que la disminución de impureza ponderada de la separación ya no es al menosmin_impurity_decrease. #8449 por Raghav RV.
Modelos lineales, kernelizados y relacionados
El parámetro
n_iterestá obsoleto enlinear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorylinear_model.Perceptron. Por Tom Dupre la Tour.
Otros predictores
neighbors.LSHForestha quedado obsoleta y será eliminada en la versión 0.21 debido a su bajo rendimiento. #9078 por Laurent Direr.neighbors.NearestCentroidya no admitemetric='precomputed', lo que ahora genera un error. #8515 por Sergul Aydore.El parámetro
alphadesemi_supervised.LabelPropagationahora no tiene efecto y está obsoleto para ser eliminado en 0.21. #9239 por Andre Ambrosio Boechat, Utkarsh Upadhyay y Joel Nothman.
Descomposición, aprendizaje múltiple y análisis de conglomerados
Se hace obsoleto el argumento
doc_topic_distrdel métodoperplexityendecomposition.LatentDirichletAllocationporque el usuario ya no tiene acceso a la distribución de temas de documentos no normalizada necesaria para el cálculo de la perplejidad. #7954 por Gary Foreman.El parámetro
n_topicsdedecomposition.LatentDirichletAllocationha sido renombrado an_componentsy será eliminado en la versión 0.21. #8922 por @Attractadore.El parámetro
ridge_alphadedecomposition.SparsePCA.transformestá obsoleto y se prefiere el parámetro de clase. #8137 por Naoya Kanai.cluster.DBSCANahora tiene un parámetrometric_params. #8139 por Naoya Kanai.
Preprocesamiento y selección de características
feature_selection.SelectFromModelahora tiene un métodopartial_fitsólo si el estimador subyacente lo tiene. Por Andreas Müller.feature_selection.SelectFromModelahora valida el parámetrothresholdy establece el atributothreshold_durante la llamada afit, y ya no durante la llamada atransform. Por Andreas Müller.El parámetro
non_negativeenfeature_extraction.FeatureHasherha quedado obsoleto, y ha sido reemplazado por una alternativa con más principios,alternate_sign. #7565 por Roman Yurchak.linear_model.RandomizedLogisticRegressionylinear_model.RandomizedLassohan quedado obsoletas y serán eliminadas en la versión 0.21. #8995 por Ramana.S.
Evaluación del modelo y metaestimadores
Se hace obsoleta la entrada del constructor
fit_paramsparamodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVen favor de pasar parámetros de palabras clave a los métodosfitde esas clases. Los parámetros dependientes de datos necesarios para el entrenamiento del modelo deben pasarse como argumentos de palabra clave afit, y el cumplimiento de esta convención permitirá utilizar las clases de selección de hiperparámetros con herramientas comomodel_selection.cross_val_predict. #2879 por Stephen Hoover.En la versión 0.21, el comportamiento por defecto de los separadores que utilizan el parámetro
test_sizeytrain_sizecambiará, de modo que si se especifica únicamentetrain_size, causará quetest_sizesea el resto. #7459 por Nelson Liu.multiclass.OneVsRestClassifierahora tiene los métodospartial_fit,decision_functionypredict_probasólo cuando el estimador subyacente los tiene. #7812 por Andreas Müller y Mikhail Korobov.multiclass.OneVsRestClassifierahora tiene un métodopartial_fitsólo si el estimador subyacente lo tiene. Por Andreas Müller.La forma de salida de
decision_functionpara la clasificación binaria enmulticlass.OneVsRestClassifierymulticlass.OneVsOneClassifieres ahora(n_samples,)para ajustarse a las convenciones de scikit-learn. #9100 por Andreas Müller.La función
multioutput.MultiOutputClassifier.predict_probasolía devolver un arreglo 3D (n_samples,n_classes,n_outputs). En el caso de que diferentes columnas objetivo tuvieran diferentes números de clases, se produciría unValueErroral intentar apilar matrices con diferentes dimensiones. Esta función devuelve ahora una lista de arreglos donde la longitud de la lista esn_outputs, y cada arreglo es (n_samples,n_classes) para esa salida en particular. #8093 por Peter Bull.Se reemplaza el atributo
named_stepsdictautils.Bunchenpipeline.Pipelinepara habilitar la finalización de pestañas en el entorno interactivo. En caso de conflicto entre el valor del atributonamed_stepsydict, se priorizará el comportamiento dedict. #8481 por Herilalaina Rakotoarison.
Misceláneos
Se hace obsoleto el parámetro
yentransformeinverse_transform. El método no debería aceptar el parámetroy, ya que se utiliza en el momento de la predicción. #8174 por Tahar Zanouda, Alexandre Gramfort and Raghav RV.SciPy >= 0.13.3 y NumPy >= 1.8.2 son ahora las versiones mínimas soportadas para scikit-learn. Las siguientes funciones respaldadas (backported) en
utilshan sido eliminadas o han quedado obsoletas en consecuencia. #8854 y #8874 por Naoya Kanai.Los parámetros
store_covariancesycovariances_dediscriminant_analysis.QuadraticDiscriminantAnalysishan sido renombrados astore_covarianceycovariance_para ser coherentes con los nombres de los parámetros correspondientes dediscriminant_analysis.LinearDiscriminantAnalysis. Se eliminarán en la versión 0.21. #7998 por Jiacheng.Eliminado en 0.19:
utils.fixes.argpartitionutils.fixes.array_equalutils.fixes.astypeutils.fixes.bincountutils.fixes.expitutils.fixes.frombuffer_emptyutils.fixes.in1dutils.fixes.normutils.fixes.rankdatautils.fixes.safe_copy
Obsoleto en 0.19, se eliminará en 0.21:
utils.arpack.eigsutils.arpack.eigshutils.arpack.svdsutils.extmath.fast_dotutils.extmath.logsumexputils.extmath.normutils.extmath.pinvhutils.graph.graph_laplacianutils.random.choiceutils.sparsetools.connected_componentsutils.stats.rankdata
Los estimadores con ambos métodos
decision_functionypredict_probaahora deben tener una relación monotónica entre ellos. Se ha añadido el métodocheck_decision_proba_consistencyen utils.estimator_checks para comprobar su consistencia. #7578 por Shubham Bhardwaj.Todas las comprobaciones en
utils.estimator_checks, en particularutils.estimator_checks.check_estimator`ahora aceptan instancias de estimadores. La mayoría de las demás comprobaciones ya no aceptan clases de estimadores. #9019 por Andreas Müller.Se asegura que los atributos de los estimadores que terminan en
_no se establecen en el constructor, sino sólo en el métodofit. En particular, los estimadores ensemble (derivados deensemble.BaseEnsemble) ahora sólo tienenself.estimators_disponible después defit. #7464 por Lars Buitinck y Loic Esteve.
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.18, incluyendo:
Joel Nothman, Loic Esteve, Andreas Mueller, Guillaume Lemaitre, Olivier Grisel, Hanmin Qin, Raghav RV, Alexandre Gramfort, themrmax, Aman Dalmia, Gael Varoquaux, Naoya Kanai, Tom Dupré la Tour, Rishikesh, Nelson Liu, Taehoon Lee, Nelle Varoquaux, Aashil, Mikhail Korobov, Sebastin Santy, Joan Massich, Roman Yurchak, RAKOTOARISON Herilalaina, Thierry Guillemot, Alexandre Abadie, Carol Willing, Balakumaran Manoharan, Josh Karnofsky, Vlad Niculae, Utkarsh Upadhyay, Dmitry Petrov, Minghui Liu, Srivatsan, Vincent Pham, Albert Thomas, Jake VanderPlas, Attractadore, JC Liu, alexandercbooth, chkoar, Óscar Nájera, Aarshay Jain, Kyle Gilliam, Ramana Subramanyam, CJ Carey, Clement Joudet, David Robles, He Chen, Joris Van den Bossche, Karan Desai, Katie Luangkote, Leland McInnes, Maniteja Nandana, Michele Lacchia, Sergei Lebedev, Shubham Bhardwaj, akshay0724, omtcyfz, rickiepark, waterponey, Vathsala Achar, jbDelafosse, Ralf Gommers, Ekaterina Krivich, Vivek Kumar, Ishank Gulati, Dave Elliott, ldirer, Reiichiro Nakano, Levi John Wolf, Mathieu Blondel, Sid Kapur, Dougal J. Sutherland, midinas, mikebenfield, Sourav Singh, Aseem Bansal, Ibraim Ganiev, Stephen Hoover, AishwaryaRK, Steven C. Howell, Gary Foreman, Neeraj Gangwar, Tahar, Jon Crall, dokato, Kathy Chen, ferria, Thomas Moreau, Charlie Brummitt, Nicolas Goix, Adam Kleczewski, Sam Shleifer, Nikita Singh, Basil Beirouti, Giorgio Patrini, Manoj Kumar, Rafael Possas, James Bourbeau, James A. Bednar, Janine Harper, Jaye, Jean Helie, Jeremy Steward, Artsiom, John Wei, Jonathan LIgo, Jonathan Rahn, seanpwilliams, Arthur Mensch, Josh Levy, Julian Kuhlmann, Julien Aubert, Jörn Hees, Kai, shivamgargsya, Kat Hempstalk, Kaushik Lakshmikanth, Kennedy, Kenneth Lyons, Kenneth Myers, Kevin Yap, Kirill Bobyrev, Konstantin Podshumok, Arthur Imbert, Lee Murray, toastedcornflakes, Lera, Li Li, Arthur Douillard, Mainak Jas, tobycheese, Manraj Singh, Manvendra Singh, Marc Meketon, MarcoFalke, Matthew Brett, Matthias Gilch, Mehul Ahuja, Melanie Goetz, Meng, Peng, Michael Dezube, Michal Baumgartner, vibrantabhi19, Artem Golubin, Milen Paskov, Antonin Carette, Morikko, MrMjauh, NALEPA Emmanuel, Namiya, Antoine Wendlinger, Narine Kokhlikyan, NarineK, Nate Guerin, Angus Williams, Ang Lu, Nicole Vavrova, Nitish Pandey, Okhlopkov Daniil Olegovich, Andy Craze, Om Prakash, Parminder Singh, Patrick Carlson, Patrick Pei, Paul Ganssle, Paulo Haddad, Paweł Lorek, Peng Yu, Pete Bachant, Peter Bull, Peter Csizsek, Peter Wang, Pieter Arthur de Jong, Ping-Yao, Chang, Preston Parry, Puneet Mathur, Quentin Hibon, Andrew Smith, Andrew Jackson, 1kastner, Rameshwar Bhaskaran, Rebecca Bilbro, Remi Rampin, Andrea Esuli, Rob Hall, Robert Bradshaw, Romain Brault, Aman Pratik, Ruifeng Zheng, Russell Smith, Sachin Agarwal, Sailesh Choyal, Samson Tan, Samuël Weber, Sarah Brown, Sebastian Pölsterl, Sebastian Raschka, Sebastian Saeger, Alyssa Batula, Abhyuday Pratap Singh, Sergey Feldman, Sergul Aydore, Sharan Yalburgi, willduan, Siddharth Gupta, Sri Krishna, Almer, Stijn Tonk, Allen Riddell, Theofilos Papapanagiotou, Alison, Alexis Mignon, Tommy Boucher, Tommy Löfstedt, Toshihiro Kamishima, Tyler Folkman, Tyler Lanigan, Alexander Junge, Varun Shenoy, Victor Poughon, Vilhelm von Ehrenheim, Aleksandr Sandrovskii, Alan Yee, Vlasios Vasileiou, Warut Vijitbenjaronk, Yang Zhang, Yaroslav Halchenko, Yichuan Liu, Yuichi Fujikawa, affanv14, aivision2020, xor, andreh7, brady salz, campustrampus, Agamemnon Krasoulis, ditenberg, elena-sharova, filipj8, fukatani, gedeck, guiniol, guoci, hakaa1, hongkahjun, i-am-xhy, jakirkham, jaroslaw-weber, jayzed82, jeroko, jmontoyam, jonathan.striebel, josephsalmon, jschendel, leereeves, martin-hahn, mathurinm, mehak-sachdeva, mlewis1729, mlliou112, mthorrell, ndingwall, nuffe, yangarbiter, plagree, pldtc325, Breno Freitas, Brett Olsen, Brian A. Alfano, Brian Burns, polmauri, Brandon Carter, Charlton Austin, Chayant T15h, Chinmaya Pancholi, Christian Danielsen, Chung Yen, Chyi-Kwei Yau, pravarmahajan, DOHMATOB Elvis, Daniel LeJeune, Daniel Hnyk, Darius Morawiec, David DeTomaso, David Gasquez, David Haberthür, David Heryanto, David Kirkby, David Nicholson, rashchedrin, Deborah Gertrude Digges, Denis Engemann, Devansh D, Dickson, Bob Baxley, Don86, E. Lynch-Klarup, Ed Rogers, Elizabeth Ferriss, Ellen-Co2, Fabian Egli, Fang-Chieh Chou, Bing Tian Dai, Greg Stupp, Grzegorz Szpak, Bertrand Thirion, Hadrien Bertrand, Harizo Rajaona, zxcvbnius, Henry Lin, Holger Peters, Icyblade Dai, Igor Andriushchenko, Ilya, Isaac Laughlin, Iván Vallés, Aurélien Bellet, JPFrancoia, Jacob Schreiber, Asish Mahapatra