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_score
ymetrics.dcg_score
que habían sido fusionados en la versión 0.19.0 por error. Las implementaciones tenían fallos y no estaban documentadas.return_train_score
que se añadió amodel_selection.GridSearchCV
,model_selection.RandomizedSearchCV
ymodel_selection.cross_validate
en 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_score
a 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_models
yregression_models
de 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_predict
donde se reportó un error conmethod='predict_proba'
para algunos clasificadores probabilísticos. #9641 por James Bourbeau.Se ha corregido un error donde
datasets.make_classification
modificó su entradaweights
. #9865 por Sachin Kelkar.model_selection.StratifiedShuffleSplit
ahora 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_predict
donde ya no aceptabaX
como lista. #9600 por Rasul Kerimov.Se ha corregido el manejo de
cross_val_predict
para la clasificación binaria conmethod='decision_function'
. #9593 por Reiichiro Nakano y los desarrolladores principales.Corrige la regresión en
pipeline.Pipeline
donde ya no aceptabasteps
como tupla. #9604 por Joris Van den Bossche.Se ha corregido un error por el que
n_iter
no estaba correctamente obsoleto, lo que hacía quen_iter
no estuviera disponible para su uso provisional enlinear_model.SGDClassifier
,linear_model. SGDRegressor
,linear_model.PassiveAggressiveClassifier
,linear_model.PassiveAggressiveRegressor
ylinear_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.TSNE
por 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_estimators
ahora pueden ejecutarse sin Nose instalado. #9697 por Joan Massich.Para mejorar la usabilidad del almacenamiento en caché
pipeline.Pipeline
de la versión 0.19,memory
permite ahora instancias dejoblib.Memory
. Para ello se utiliza la nuevautils.validation.check_memory
helper. issue:9584
by 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.KMeans
con X disperso y centroides iniciales dados (corrección de errores)cross_decomposition.PLSRegression
conscale=True
(corrección de errores)ensemble.GradientBoostingClassifier
yensemble.GradientBoostingRegressor
dondemin_impurity_split
es 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.StratifiedKFold
conshuffle=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.ClassifierChain
para clasificación multietiqueta. Por Adam Kleczewski.Añadido el solucionador
'saga
que implementa la versión mejorada del Gradiente Promedio Estocástico, enlinear_model.LogisticRegression
ylinear_model.Ridge
. Permite el uso de la penalización L1 con pérdida logística multinomial, y se comporta marginalmente mejor quesag
durante 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.LocalOutlierFactor
para detección de anomalías basada en vecinos más cercanos. #5279 por Nicolas Goix y Alexandre Gramfort.Se añadió la clase
preprocessing.QuantileTransformer
y la funciónpreprocessing.quantile_transform
para 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.GridSearchCV
ymodel_selection.RandomizedSearchCV
ahora 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_validate
que 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_score
ymetrics.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.RepeatedKFold
ymodel_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_leaf
en 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.GradientBoostingClassifier
yensemble.GradientBoostingRegressor
ahora soportan entradas dispersas para predicción. #6101 de Ibraim Ganiev.ensemble.VotingClassifier
ahora permite cambiar estimadores usandoensemble.VotingClassifier.set_params
. Un estimador también puede ser eliminado asignándoleNone
. #7674 por Yichuan Liu.tree.export_graphviz
ahora muestra el número configurable de decimales. #8698 por Guillaume Lemaitre.Se añadió el parámetro
flatten_transform
aensemble.VotingClassifier
para cambiar la forma de salida del métodotransform
a 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.PassiveAggressiveRegressor
ylinear_model.Perceptron
ahora exponen los parámetrosmax_iter
ytol
, para manejar la convergencia con mayor precisión. El parámetron_iter
está 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
average
para realizar el promedio de peso enlinear_model.PassiveAggressiveClassifier
. #4939 por Andrea Esuli.linear_model.RANSACRegressor
ya no lanza un error al llamar afit
si 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étodopredict
es mucho más rápido conreturn_std=True
. #8591 por Hadrien Bertrand.Se añadió
return_std
al métodopredict
delinear_model.ARDRegression
ylinear_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.LogisticRegression
cuando se utiliza el método de solución newton-cg; ylinear_model.Ridge
al 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
vecinos
ahora tienen menos restricciones: deben tomar dos arreglos 1d y devolver un float. #6288 por Jake Vanderplas.algorithm='auto
en estimadores devecinos
ahora 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.MiniBatchKMeans
ycluster.KMeans
ahora usan significativamente menos memoria al asignar puntos de datos al centro de su conglomerado más cercano. #7721 por Jon Crall.decomposition.PCA
,decomposition.IncrementalPCA
ydecomposition.TruncatedSVD
ahora exponen los valores singulares del SVD subyacente. Se almacenan en el atributosingular_values_
, como endecomposition.IncrementalPCA
. #7685 por Tommy Löfstedtdecomposition.NMF
ahora es más rápido cuandobeta_loss=0
. #9277 por @hongkahjun.Mejoras de memoria para el método
barnes_hut
enmanifold.TSNE
#7089 por Thomas Moreau y Olivier Grisel.Mejoras en el programa de optimización de Barnes-Hut
manifold.TSNE
para 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.PCA
ydecomposition.randomized_svd_low_rank
. #9067 por Raghav RV.
Preprocesamiento y selección de características
Se añadió el parámetro
norm_order
afeature_selection.SelectFromModel
para 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_regression
concenter=True
. #8065 por Daniel LeJeune.Pequeña mejora de rendimiento en la creación de n-gramas en
feature_extraction.text
mediante 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 < 0
sino 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.Pipeline
ahora 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.Pipeline
ahora pueden ser accedidos como atributos de su atributonamed_steps
. #8586 por Herilalaina Rakotoarison.Se añadió el parámetro
sample_weight
apipeline.Pipeline.score
. #7723 por Mikhail Korobov.Se ha añadido la capacidad de asignar el parámetro
n_jobs
apipeline.make_union
. Se elevará unTypeError
para cualquier otro argumento de palabra clave. #8028 por Alexander Booth.model_selection.GridSearchCV
,model_selection.RandomizedSearchCV
ymodel_selection.cross_val_score
ahora permiten estimadores con núcleos invocables lo cual estaba previamente prohibido. #8005 por Andreas Muller .model_selection.cross_val_predict
ahora devuelve la salida de forma correcta para todos los valores del argumentomethod
. #7863 por Aman Dalmia.Se añadieron los parámetros
shuffle
yrandom_state
para 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.StratifiedShuffleSplit
ahora 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
shuffle
amodel_selection.train_test_split
. #8845 por themrmaxmultioutput.MultiOutputRegressor
ymultioutput.MultiOutputClassifier
ahora soportan el aprendizaje en línea usandopartial_fit
. :issue:8053
de Peng Yu.Se añade el parámetro
max_train_size
amodel_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_scorer
yscoring
. #8117 de Raghav RV.También está disponible un puntuador basado en
metrics.explained_variance_score
. #9259 por Hanmin Qin.
Métricas
metrics.matthews_corrcoef
ahora soporta la clasificación multiclase. #8094 por Jon Crall.Se añade el parámetro
sample_weight
ametrics.cohen_kappa_score
. #8335 por Victor Poughon.
Misceláneos
utils.check_estimator
ahora 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_sparse
en los métodos deutils.validation
. Este parámetro ahora sólo acepta booleanos, cadenas o listas/tuplas de cadenas.accept_sparse=None
está 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.DummyClassifier
ydummy.DummyRegressor
ahora 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.IsolationForest
utiliza una fórmula incorrecta para la longitud promedio de la trayectoria #8549 de Peter Wang.Se ha corregido un error por el que
ensemble.AdaBoostClassifier
generaZeroDivisionError
al ajustar datos con etiquetas de una sola clase. #7501 por Dominik Krzeminski.Se ha corregido un error en
ensemble.GradientBoostingClassifier
yensemble.GradientBoostingRegressor
por el que un número de punto flotante (float) que se comparaba con0.0
utilizando ``==` provocaba un error de división por cero. #7970 por He Chen.Se corrige un error por el que
ensemble.GradientBoostingClassifier
yensemble.GradientBoostingRegressor
ignoraban el parámetromin_impurity_split
. #8006 por Sebastian Pölsterl.Se ha corregido
oob_score
enensemble.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_weight
como lista rompía los bosques aleatorios en Python 2 #8068 por @xor.Se ha corregido un error por el que
ensemble.IsolationForest
falla cuandomax_features
es 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 - ypred
lo que conducía a valores erróneos al llamar a__call__
. #8087 por Alexis Mignon.Se corrige un error por el que
ensemble.VotingClassifier
genera 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_graphviz
generaba 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.fit
podía ejecutarse hastamax_iter
si encontraba un grupo grande de valores típicos de forma anticipada. #8251 por @aivision2020.Se ha corregido un error por el que
naive_bayes.MultinomialNB
ynaive_bayes.BernoulliNB
fallaban cuandoalpha=0
. #5814 por Yichuan Liu y Herilalaina Rakotoarison.Se ha corregido un error por el que
linear_model.LassoLars
no 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.LarsCV
ylinear_model.LassoLarsCV
, donde el parámetroprecompute
no 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.RidgeCV
ylinear_model.Ridge
cuando se utilizanormalize=True
. #9302 por Alexandre Gramfort.Se corrige un error por el que
linear_model.LassoLars.fit
a veces dejabacoef_
como una lista, en lugar de un ndarray. #8160 por CJ Carey.Se corrige
linear_model.BayesianRidge.fit
para 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.OneClassSVM
por 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.GaussianProcessRegressor
cuando 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.BaseLabelPropagation
para implementar correctamenteLabelPropagation
yLabelSpreading
como 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_exageration
no 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.LatentDirichletAllocation
por el que el métodoperplexity
devolvía resultados incorrectos porque el métodotransform
devuelve 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.SparseCoder
ydecomposition.sparse_encode
para 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.RandomizedPCA
ydecomposition.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.DBSCAN
daba 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.KMeans
con 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.MinCovDet
por el que la introducción de datos que producía una matriz de covarianzas singular provocaba que el método ayudante_c_step
lanzara una excepción. #3367 por Jeremy Steward.Se ha corregido un error en
manifold.TSNE
que afectaba a la convergencia del descenso de gradiente. #8768 por David DeTomaso.Se ha corregido un error en
manifold.TSNE
donde se almacenaba lakl_divergence_
incorrecta. #6507 por Sebastian Saeger.Se ha corregido el escalamiento incorrecto en
cross_decomposition.PLSRegression
conscale=True
. #7819 por jayzed82.El método
fit
decluster.bicluster.SpectralCoclustering
ycluster.bicluster.SpectralBiclustering
se ajusta a la API aceptandoy
y devolviendo el objeto. #6126, #7814 por Laurent Direr y Maniteja Nandana.Se corrige un error por el que los métodos
sample
demixture
no 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.normalize
conreturn_norm=True
ahora lanzará unNotImplementedError
con 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.SelectFdr
no 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.RandomizedLasso
ylinear_model.RandomizedLogisticRegression
se rompían para entradas dispersas. #8259 por Aman Dalmia.Se corrige un error por el que
feature_extraction.FeatureHasher
aplicaba obligatoriamente una proyección aleatoria dispersa a las características mapeadas (hashed), impidiendo el uso defeature_extraction.text.HashingVectorizer
en un pipeline confeature_extraction.text.TfidfTransformer
. #7565 por Roman Yurchak.Se corrige un error por el que
feature_selection.mutual_info_regression
no 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_transform
devolví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.GridSearchCV
ygrid_search.RandomizedSearchCV
que 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_curve
reutilizaba el mismo estimador para cada valor de parámetro. #7365 por Aleksandr Sandrovskii.model_selection.permutation_test_score
ahora 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.OneVsOneClassifier
departial_fit
ahora asegura que todas las clases sean proporcionadas por adelantado. #6250 por Asish Panda.Se corrige
multioutput.MultiOutputClassifier.predict_proba
para 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 unValueError
al 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_score
ya 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_targets
que devolvía'binary'
siy_true
yy_pred
eran ambos'binary'
pero la unión dey_true
yy_pred
era'multiclass'
. #8377 por Loic Esteve.Se ha corregido un error de desbordamiento de enteros en
metrics.confusion_matrix
y, por tanto, enmetrics.cohen_kappa_score
. #8354, #7929 por Joel Nothman y Jon Crall.Se ha corregido el paso del parámetro
gamma
al kernelchi2
enmetrics.pairwise.pairwise_kernels
#5211 por Nick Rhinehart, Saurabh Bansod y Andreas Müller.
Misceláneos
Se ha corregido un error cuando
datasets.make_classification
falla al generar más de 30 características. #8159 por Herilalaina Rakotoarison.Se ha corregido un error por el que
datasets.make_moons
da un resultado incorrecto cuandon_samples
es impar. #8198 por Josh Levy.Algunas funciones
fetch_
endatasets
ignoraban la palabra clavedownload_if_missing
. #7944 por Ralf Gommers.Se corrigen los estimadores para que acepten un parámetro
sample_weight
de tipopandas.Series
en su funciónfit
. #7825 by Kathleen Chen.Se corrige un error en los casos donde
numpy.cumsum
puede 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_home
asklearn.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_decrease
en lugar demin_impurity_split
, que ya está obsoleto. El parámetromin_impurity_decrease
ayuda 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_iter
está obsoleto enlinear_model.SGDClassifier
,linear_model.SGDRegressor
,linear_model.PassiveAggressiveClassifier
,linear_model.PassiveAggressiveRegressor
ylinear_model.Perceptron
. Por Tom Dupre la Tour.
Otros predictores
neighbors.LSHForest
ha quedado obsoleta y será eliminada en la versión 0.21 debido a su bajo rendimiento. #9078 por Laurent Direr.neighbors.NearestCentroid
ya no admitemetric='precomputed'
, lo que ahora genera un error. #8515 por Sergul Aydore.El parámetro
alpha
desemi_supervised.LabelPropagation
ahora 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_distr
del métodoperplexity
endecomposition.LatentDirichletAllocation
porque 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_topics
dedecomposition.LatentDirichletAllocation
ha sido renombrado an_components
y será eliminado en la versión 0.21. #8922 por @Attractadore.El parámetro
ridge_alpha
dedecomposition.SparsePCA.transform
está obsoleto y se prefiere el parámetro de clase. #8137 por Naoya Kanai.cluster.DBSCAN
ahora tiene un parámetrometric_params
. #8139 por Naoya Kanai.
Preprocesamiento y selección de características
feature_selection.SelectFromModel
ahora tiene un métodopartial_fit
sólo si el estimador subyacente lo tiene. Por Andreas Müller.feature_selection.SelectFromModel
ahora valida el parámetrothreshold
y establece el atributothreshold_
durante la llamada afit
, y ya no durante la llamada atransform
. Por Andreas Müller.El parámetro
non_negative
enfeature_extraction.FeatureHasher
ha quedado obsoleto, y ha sido reemplazado por una alternativa con más principios,alternate_sign
. #7565 por Roman Yurchak.linear_model.RandomizedLogisticRegression
ylinear_model.RandomizedLasso
han 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_params
paramodel_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
en favor de pasar parámetros de palabras clave a los métodosfit
de 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_size
ytrain_size
cambiará, de modo que si se especifica únicamentetrain_size
, causará quetest_size
sea el resto. #7459 por Nelson Liu.multiclass.OneVsRestClassifier
ahora tiene los métodospartial_fit
,decision_function
ypredict_proba
sólo cuando el estimador subyacente los tiene. #7812 por Andreas Müller y Mikhail Korobov.multiclass.OneVsRestClassifier
ahora tiene un métodopartial_fit
sólo si el estimador subyacente lo tiene. Por Andreas Müller.La forma de salida de
decision_function
para la clasificación binaria enmulticlass.OneVsRestClassifier
ymulticlass.OneVsOneClassifier
es ahora(n_samples,)
para ajustarse a las convenciones de scikit-learn. #9100 por Andreas Müller.La función
multioutput.MultiOutputClassifier.predict_proba
solí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 unValueError
al 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_steps
dict
autils.Bunch
enpipeline.Pipeline
para habilitar la finalización de pestañas en el entorno interactivo. En caso de conflicto entre el valor del atributonamed_steps
ydict
, se priorizará el comportamiento dedict
. #8481 por Herilalaina Rakotoarison.
Misceláneos
Se hace obsoleto el parámetro
y
entransform
einverse_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
utils
han sido eliminadas o han quedado obsoletas en consecuencia. #8854 y #8874 por Naoya Kanai.Los parámetros
store_covariances
ycovariances_
dediscriminant_analysis.QuadraticDiscriminantAnalysis
han sido renombrados astore_covariance
ycovariance_
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.argpartition
utils.fixes.array_equal
utils.fixes.astype
utils.fixes.bincount
utils.fixes.expit
utils.fixes.frombuffer_empty
utils.fixes.in1d
utils.fixes.norm
utils.fixes.rankdata
utils.fixes.safe_copy
Obsoleto en 0.19, se eliminará en 0.21:
utils.arpack.eigs
utils.arpack.eigsh
utils.arpack.svds
utils.extmath.fast_dot
utils.extmath.logsumexp
utils.extmath.norm
utils.extmath.pinvh
utils.graph.graph_laplacian
utils.random.choice
utils.sparsetools.connected_components
utils.stats.rankdata
Los estimadores con ambos métodos
decision_function
ypredict_proba
ahora deben tener una relación monotónica entre ellos. Se ha añadido el métodocheck_decision_proba_consistency
en 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