Versión 0.17.1¶
18 de febrero de 2016
Registro de cambios¶
Corrección de errores¶
Actualiza joblib a la versión 0.9.4 provista que corrige un error importante en
joblib.Parallelque puede producir resultados erróneos de forma silenciosa cuando se trabaja con conjuntos de datos de más de 1MB: https://github.com/joblib/joblib/blob/0.9.4/CHANGES.rstSe ha corregido la lectura de los pickles de Bunch generados con la versión de scikit-learn <= 0.16. Esto puede afectar a los usuarios que ya han descargado un conjunto de datos con scikit-learn 0.16 y lo están cargando con scikit-learn 0.17. Ver #6196 para saber cómo afectaba esto a
datasets.fetch_20newsgroups. Por Loic Esteve.Se ha corregido un error que impedía utilizar la puntuación AUC de ROC para realizar la búsqueda en cuadrícula en varias CPU / núcleos (cores) en arreglos grandes. Ver #6147 Por Olivier Grisel.
Se ha corregido un error que impedía establecer correctamente el parámetro
presortenensemble.GradientBoostingRegressor. Ver #5857 Por Andrew McCulloh.Se ha corregido un error de joblib al evaluar la perplejidad de un modelo
decomposition.LatentDirichletAllocation. Ver #6258 Por Chyi-Kwei Yau.
Versión 0.17¶
5 de noviembre de 2015
Registro de cambios¶
Nuevas características¶
Todas las clases Scaler excepto
preprocessing.RobustScalerpueden ser ajustadas en línea llamando apartial_fit. Por Giorgio Patrini.La nueva clase
ensemble.VotingClassifierimplementa un clasificador de conjunto(ensemble) de «regla de la mayoría» / «voto suave» para combinar estimadores para la clasificación. Por Sebastian Raschka.La nueva clase
preprocessing.RobustScalerproporciona una alternativa apreprocessing.StandardScalerpara el centrado de características y la normalización de rangos que es robusta a los valores atípicos. Por Thomas Unterthiner.La nueva clase
preprocessing.MaxAbsScalerproporciona una alternativa apreprocessing.MinMaxScalerpara la normalización de rangos de características cuando los datos ya están centrados o son dispersos. Por Thomas Unterthiner.La nueva clase
preprocessing.FunctionTransformerconvierte una función de Python en un objeto transformador compatible conPipeline. Por Joe Jevnik.Las nuevas clases
cross_validation.LabelKFoldycross_validation.LabelShuffleSplitgeneran pliegues de entrenamiento-prueba, respectivamente, similares across_validation.KFoldycross_validation.ShuffleSplit, excepto que los pliegues están condicionados a un arreglo de etiquetas. Por Brian McFee, Jean Kossaifi y Gilles Louppe.decomposition.LatentDirichletAllocationimplementa el modelo temático Asignación latente de Dirichlet (Latent Dirichlet Allocation) con inferencia variacional en línea. Por Chyi-Kwei Yau, con código basado en una implementación de Matt Hoffman. (#3659)El nuevo solucionador
sagimplementa un descenso de gradiente medio estocástico (Stochastic Average Gradient descent) y está disponible tanto enlinear_model.LogisticRegressioncomo enlinear_model.Ridge. Este solucionador es muy eficiente para grandes conjuntos de datos. Por Danny Sullivan y Tom Dupre la Tour. (#4738)El nuevo solucionador
cdimplementa un Descenso de Coordenadas endecomposition.NMF. El solucionador anterior basado en Gradiente Proyectado todavía está disponible estableciendo el nuevo parámetrosolverapg, pero está obsoleto y será eliminado en 0.19, junto condecomposition.ProjectedGradientNMFy los parámetrossparseness,eta,betaynls_max_iter. Los nuevos parámetrosalphayl1_ratiocontrolan la regularización L1 y L2, yshuffleañade un paso de mezclado en el solucionadorcd. Por Tom Dupre la Tour y Mathieu Blondel.
Mejoras¶
manifold.TSNEahora soporta la optimización aproximada a través del método Barnes-Hut, lo que lleva a un ajuste mucho más rápido. Por Christopher Erick Moody. (#4025)cluster.mean_shift_.MeanShiftahora soporta la ejecución en paralelo, como se implementa en la funciónmean_shift. Por Martino Sorbaro.naive_bayes.GaussianNBahora soporta el ajuste consample_weight. Por Jan Hendrik Metzen.dummy.DummyClassifierahora soporta una estrategia de ajuste previo. Por Arnaud Joly.Se añadió un método
fit_predictparamixture.GMy subclases. Por Cory Lorenz.Se añadió la métrica
metrics.label_ranking_loss. Por Arnaud Joly.Se añadió la métrica
metrics.cohen_kappa_score.Se añadió un parámetro constructor
warm_starta los modelos de conjunto empaquetado (ensemble bagging) para aumentar el tamaño del conjunto. Por Tim Head.Se añadió la opción de utilizar métricas de regresión de salida múltiple sin promediar. Por Konstantin Shmelkov y Michael Eickenberg.
Se añadió la opción
stratifyacross_validation.train_test_splitpara la división estratificada. Por Miroslav Batchkarov.La función
tree.export_graphvizsoporta ahora mejoras estéticas paratree.DecisionTreeClassifierytree.DecisionTreeRegressor, incluyendo opciones para colorear los nodos por su clase mayoritaria o impureza, mostrando los nombres de las variables, y utilizando las proporciones de los nodos en lugar de los recuentos en bruto de las muestras. Por Trevor Stephens.Mejora de la velocidad del solucionador
newton-cgenlinear_model.LogisticRegression, evitando el cálculo de pérdidas. Por Mathieu Blondel y Tom Dupre la Tour.La heurística
class_weight="auto"en los clasificadores que soportanclass_weightquedó obsoleta y fue reemplazada por la opciónclass_weight="balanced", que tiene una fórmula e interpretación más simple. Por Hanna Wallach y Andreas Müller.Se ha añadido el parámetro
class_weightpara ponderar automáticamente las muestras por la frecuencia de la clase paralinear_model.PassiveAggressiveClassifier. Por Trevor Stephens.Se han añadido los enlaces de las páginas de referencia de la API a la guía del usuario. Por Andreas Müller.
El parámetro
labelsdesklearn.metrics.f1_score,sklearn.metrics.fbeta_score,sklearn.metrics.recall_scoreysklearn.metrics.precision_scoreha sido ampliado. Ahora es posible ignorar una o más etiquetas, como en el caso de que un problema multiclase tenga una clase mayoritaria que ignorar. Por Joel Nothman.Añadido soporte de
sample_weightalinear_model.RidgeClassifier. Por Trevor Stephens.Proporciona una opción para la salida dispersa de
sklearn.metrics.pairwise.cosine_similarity. Por Jaidev Deshpande.Añadida
minmax_scalepara proporcionar una función de interfaz paraMinMaxScaler. Por Thomas Unterthiner.dump_svmlight_fileahora maneja conjuntos de datos multietiqueta. Por Chih-Wei Chang.Cargador de conjuntos de datos RCV1 (
sklearn.datasets.fetch_rcv1). Por Tom Dupre la Tour.El conjunto de datos de clasificación clásica de dos clases «Cáncer de mama de Wisconsin»(Wisconsin Breast Cancer) está ahora incluido en scikit-learn, disponible con
sklearn.dataset.load_breast_cancer.Actualizado a joblib 0.9.3 para beneficiarse del nuevo lote automático de tareas cortas. Esto hace posible que scikit-learn se beneficie del paralelismo cuando muchas tareas muy cortas se ejecutan en paralelo, por ejemplo por el metaestimador
grid_search.GridSearchCVconn_jobs > 1utilizado con una gran cuadrícula de parámetros en un pequeño conjunto de datos. Por Vlad Niculae, Olivier Grisel y Loic Esteve.Para más detalles sobre los cambios en joblib 0.9.3 consulta las notas de la versión: https://github.com/joblib/joblib/blob/master/CHANGES.rst#release-093
Velocidad mejorada (3 veces por iteración) de
decomposition.DictLearningcon el método de descenso de coordenadas delinear_model.Lasso. Por Arthur Mensch.Procesamiento paralelo (por hilos) para consultas de vecinos más cercanos (utilizando el árbol de bolas) por Nikolay Mayorov.
Permite que
datasets.make_multilabel_classificationdé salida a unydisperso. Por Kashif Rasul.cluster.DBSCANahora acepta una matriz dispersa de distancias precalculadas, permitiendo un precálculo de distancias eficiente en memoria. Por Joel Nothman.tree.DecisionTreeClassifierahora presenta un métodoapplypara recuperar los índices de las hojas de las muestras que se predicen. Por Daniel Galvez y Gilles Louppe.Acelera los regresores de los árboles de decisión, los regresores de los bosques aleatorios, los regresores de los árboles adicionales y los estimadores de potenciación del gradiente calculando una cantidad proxy de la mejora de la impureza durante el crecimiento del árbol. La cantidad proxy es tal que la división que maximiza este valor también maximiza la mejora de la impureza. Por Arnaud Joly, Jacob Schreiber y Gilles Louppe.
Acelera los métodos basados en árboles reduciendo el número de cálculos necesarios al calcular la medida de impureza teniendo en cuenta la relación lineal de los estadísticos calculados. El efecto es especialmente visible con árboles adicionales y en conjuntos de datos con características categóricas o dispersas. Por Arnaud Joly.
ensemble.GradientBoostingRegressoryensemble.GradientBoostingClassifierexponen ahora un métodoapplypara recuperar los índices de hoja en los que termina cada muestra en cada intento. Por Jacob Schreiber.Añade el soporte
sample_weightalinear_model.LinearRegression. Por Sonny Hu. (##4881)Añade
n_iter_without_progressamanifold.TSNEpara controlar el criterio de detenimiento. Por Santi Villalba. (#5186)Se añadió el parámetro opcional
random_stateenlinear_model. idge, para establecer la semilla del generador pseudo-aleatorio utilizado en el solucionadorsag. Por Tom Dupre la Tour.Se añadió el parámetro opcional
warm_startenlinear_model.LogisticRegression. Si se establece en True, los solucionadoreslbfgs,newton-cgysagserán inicializados con los coeficientes calculados en el ajuste anterior. Por Tom Dupre la Tour.Se añadió el soporte
sample_weightalinear_model.LogisticRegressionpara los solucionadoreslbfgs,newton-cg, ysag. Por Valentin Stolbunov. Soporte añadido al solucionadorliblinear. Por Manoj Kumar.Se añadió el parámetro opcional
presortaensemble.GradientBoostingRegressoryensemble.GradientBoostingClassifier, manteniendo el mismo comportamiento por defecto. Esto permite a los potenciadores de gradiente desactivar la preclasificación cuando se construyen árboles profundos o se utilizan datos dispersos. Por Jacob Schreiber.Se modificó
metrics.roc_curvepara eliminar los umbrales innecesarios por defecto. Por Graham Clenaghan.Se añadió el metatransformador
feature_selection.SelectFromModelque puede utilizarse junto con los estimadores que tienen el atributocoef_ofeature_importances_para seleccionar las características importantes de los datos de entrada. Por Maheshakya Wijewardena, Joel Nothman y Manoj Kumar.Se añadió
metrics.pairwise.laplacian_kernel. Por Clyde Fare.covariance.GraphLassopermite controlar por separado el criterio de convergencia del subproblema Elastic-Net mediante el parámetroenet_tol.Se mejoró la verbosidad en
decomposition.DictionaryLearning.ensemble.RandomForestClassifieryensemble.RandomForestRegressorya no almacenan explícitamente las muestras utilizadas en el empaquetado(bagging), lo que resulta en una huella de memoria mucho más reducida para el almacenamiento de modelos de bosque aleatorio.Se añadió la opción
positivealinear_model.Larsylinear_model.lars_pathpara forzar que los coeficientes sean positivos. (#5131)Se añadió el parámetro
X_norm_squaredametrics.pairwise.euclidean_distancespara proporcionar normas cuadradas precalculadas paraX.Se añadió el método
fit_predictapipeline.Pipeline.Se añadió la función
preprocessing.min_max_scale.
Corrección de errores¶
Se corrigió el no determinismo en
dummy.DummyClassifiercon salida multietiqueta dispersa. Por Andreas Müller.Se corrigió la forma de salida de
linear_model.RANSACRegressora(n_samples, ). Por Andreas Müller.Se corrigió el error en
decomposition.DictLearningcuandon_jobs < 0. Por Andreas Müller.Se corrigió el error donde
grid_search.RandomizedSearchCVpodía consumir mucha memoria para cuadrículas discretas de gran tamaño. Por Joel Nothman.Se corrigió un error en
linear_model.LogisticRegressionCVdondepenaltyfue ignorado en el ajuste final. Por Manoj Kumar.Se corrigió un error en
ensemble.forest.ForestClassifieral calcular oob_score y X es una sparse.csc_matrix. Por Ankur Ankan.Todos los regresores ahora manejan y advierten consistentemente cuando se les da
yque es de la forma(n_samples, 1). Por Andreas Müller y Henry Lin. (#5431)Corrección en
cluster.KMeansreasignación de conglomerados para entradas dispersas por Lars Buitinck.Se corrigió un error en
lda.LDAque podía provocar matrices de covarianza asimétricas al utilizar la reducción(shrinkage). Por Martin Billinger.Se corrigió
cross_validation.cross_val_predictpara estimadores con predicciones dispersas. Por Buddha Prakash.Se corregió el método
predict_probadelinear_model.LogisticRegressionpara que utilice soft-max en lugar de la normalización uno contra el resto(one-vs-rest). Por Manoj Kumar. (#5182)Se corrigió el método
partial_fitdelinear_model.SGDClassifiercuando se llama conaverage=True. Por Andrew Lamb. (#5282)Los buscadores de conjuntos de datos utilizan nombres de archivo diferentes en Python 2 y Python 3 para evitar incidencias de compatibilidad al realizar pickling. Por Olivier Grisel. (#5355)
Se corrigió un error en
naive_bayes.GaussianNBque causaba que los resultados de la clasificación dependieran de la escala. Por Jake Vanderplas.Se corrigió temporalmente
linear_model.Ridge, que era incorrecto al ajustar el intercepto en el caso de datos dispersos. La corrección cambia automáticamente el solucionador a “sag” en este caso. #5360 por Tom Dupre la Tour.Se corrigió un error de rendimiento en
decomposition.RandomizedPCAen datos con un gran número de características y menos muestras. (#4478) Por Andreas Müller, Loic Esteve y Giorgio Patrini.Se corrigió un error en
cross_decomposition.PLSque producía una salida inestable y dependiente de la plataforma, y fallaba enfit_transform. Por Arthur Mensch.Correcciones en la clase
Bunchutilizada para almacenar conjuntos de datos.Se corrigió
ensemble.plot_partial_dependenceignorando el parámetropercentiles.Proporciona un
setcomo vocabulario enCountVectorizerque ya no conduce a resultados inconsistentes en el pickling.Se corrigieron las condiciones sobre cuándo es necesario volver a calcular una matriz Gram precalculada en
linear_model.LinearRegression,linear_model.OrthogonalMatchingPursuit,linear_model.Lassoylinear_model.ElasticNet.Se corrigió el diseño inconsistente de la memoria en el solucionador de descenso de coordenadas que afectaba a
linear_model.DictionaryLearningycovariance.GraphLasso. (#5337) Por Olivier Grisel.manifold.LocallyLinearEmbeddingya no ignora el parámetroreg.Los estimadores de vecinos más cercanos con métricas de distancia personalizadas ahora se pueden serializar. (#4362)
Se corrigió un error en
pipeline.FeatureUniondondetransformer_weightsno se manejaba correctamente al realizar búsquedas en cuadrícula.Se corrigió un error en
linear_model.LogisticRegressionylinear_model.LogisticRegressionCVal utilizarclass_weight='balanced'oclass_weight='auto'. Por Tom Dupre la Tour.Se corrigió el error #5495 al hacer OVR(SVC(decision_function_shape=»ovr»)). Corregido por Elvis Dohmatob.
Resumen de cambios en la API¶
Los atributos
data_min,data_maxydata_rangedepreprocessing.MinMaxScalerestán obsoletos y no estarán disponibles a partir de la versión 0.19. En su lugar, la clase presenta ahoradata_min_,data_max_ydata_range_. Por Giorgio Patrini.Todas las clases Scaler tienen ahora un atributo
scale_, el reescalado de características aplicado por sus métodostransform. El antiguo atributostd_enpreprocessing.StandardScalerestá obsoleto y es sustituido porscale_; no estará disponible en 0.19. Por Giorgio Patrini.svm.SVC`ysvm.NuSVCtienen ahora un parámetrodecision_function_shapepara que su función de decisión tenga la forma(n_samples, n_classes)estableciendodecision_function_shape='ovr'. Este será el comportamiento por defecto a partir de 0.19. Por Andreas Müller.Pasar arreglos de datos 1D como entrada a los estimadores está ahora obsoleto, ya que causaba confusión en cómo los elementos del arreglo debían ser interpretados como características o como muestras. Ahora se espera que todos los arreglos de datos tengan una forma explícita
(n_samples, n_features). Por Vighnesh Birodkar.lda.LDAyqda.QDAse han movido adiscriminant_analysis.LinearDiscriminantAnalysisydiscriminant_analysis.QuadraticDiscriminantAnalysis.Los parámetros
store_covarianceytolse han movido del método fit al constructor endiscriminant_analysis.LinearDiscriminantAnalysisy los parámetrosstore_covariancesytolse han movido del método fit al constructor endiscriminant_analysis.QuadraticDiscriminantAnalysis.Los modelos que heredan de
LearntSelectorMixinya no soportan los métodos de transformación. (es decir, RandomForests, GradientBoosting, LogisticRegression, DecisionTrees, SVMs y modelos relacionados con SGD). Envuelve estos modelos en el metatransformadorfeature_selection.SelectFromModelpara eliminar las características (segúncoefs_ofeature_importances_) que estén por debajo de un determinado valor umbral.cluster.KMeansvuelve a ejecutar las asignaciones de conglomerado(cluster) en caso de no convergencia, para asegurar la consistencia depredict(X)ylabels_. Por Vighnesh Birodkar.Los modelos clasificadores y regresores se etiquetan ahora como tales utilizando el atributo
_estimator_type.Los iteradores de validación cruzada siempre proporcionan índices en el conjunto de entrenamiento y de prueba, no máscaras booleanas.
La función
decision_functionen todos los regresores ha quedado obsoleta y se eliminará en la versión 0.19. Utilizapredicten su lugar.datasets.load_lfw_pairsestá obsoleto y se eliminará en la versión 0.19. Utilizadatasets.fetch_lfw_pairsen su lugar.Se eliminó el módulo obsoleto ``hmm`.
Se eliminó el iterador de validación cruzada
Bootstrapobsoleto.Las clases obsoletas
WardyWardAgglomerativehan sido eliminadas. Utiliza en su lugarclustering.AgglomerativeClustering.cross_validation.check_cves ahora una función pública.La propiedad
residues_delinear_model.LinearRegressionestá obsoleta y se eliminará en la versión 0.19.El parámetro obsoleto
n_jobsdelinear_model.LinearRegressionha sido movido al constructor.Se eliminó el parámetro obsoleto
class_weightdel métodofitdelinear_model.SGDClassifier. Utiliza el parámetro de construcción en su lugar.Se eliminó el soporte obsoleto para el formato multietiqueta de secuencia de secuencias (o lista de listas). Para convertir hacia y desde el formato de matriz indicatriz binaria soportada, utiliza
MultiLabelBinarizer.El comportamiento de la llamada al método
inverse_transformdePipeline.pipelinecambiará en 0.19. Ya no se transformará la entrada unidimensional en una entrada bidimensional.Se eliminaron los atributos obsoletos
indicator_matrix_,multilabel_yclasses_depreprocessing.LabelBinarizer.El uso de
gamma=0ensvm.SVCysvm.SVRpara establecer automáticamente la gamma a1. / n_featuresestá obsoleto y se eliminará en la versión 0.19. Utilizagamma="auto"en su lugar.
Contribuyentes de código¶
Aaron Schumacher, Adithya Ganesh, akitty, Alexandre Gramfort, Alexey Grigorev, Ali Baharev, Allen Riddell, Ando Saabas, Andreas Mueller, Andrew Lamb, Anish Shah, Ankur Ankan, Anthony Erlinger, Ari Rouvinen, Arnaud Joly, Arnaud Rachez, Arthur Mensch, banilo, Barmaley.exe, benjaminirving, Boyuan Deng, Brett Naul, Brian McFee, Buddha Prakash, Chi Zhang, Chih-Wei Chang, Christof Angermueller, Christoph Gohlke, Christophe Bourguignat, Christopher Erick Moody, Chyi-Kwei Yau, Cindy Sridharan, CJ Carey, Clyde-fare, Cory Lorenz, Dan Blanchard, Daniel Galvez, Daniel Kronovet, Danny Sullivan, Data1010, David, David D Lowe, David Dotson, djipey, Dmitry Spikhalskiy, Donne Martin, Dougal J. Sutherland, Dougal Sutherland, edson duarte, Eduardo Caro, Eric Larson, Eric Martin, Erich Schubert, Fernando Carrillo, Frank C. Eckert, Frank Zalkow, Gael Varoquaux, Ganiev Ibraim, Gilles Louppe, Giorgio Patrini, giorgiop, Graham Clenaghan, Gryllos Prokopis, gwulfs, Henry Lin, Hsuan-Tien Lin, Immanuel Bayer, Ishank Gulati, Jack Martin, Jacob Schreiber, Jaidev Deshpande, Jake Vanderplas, Jan Hendrik Metzen, Jean Kossaifi, Jeffrey04, Jeremy, jfraj, Jiali Mei, Joe Jevnik, Joel Nothman, John Kirkham, John Wittenauer, Joseph, Joshua Loyal, Jungkook Park, KamalakerDadi, Kashif Rasul, Keith Goodman, Kian Ho, Konstantin Shmelkov, Kyler Brown, Lars Buitinck, Lilian Besson, Loic Esteve, Louis Tiao, maheshakya, Maheshakya Wijewardena, Manoj Kumar, MarkTab marktab.net, Martin Ku, Martin Spacek, MartinBpr, martinosorb, MaryanMorel, Masafumi Oyamada, Mathieu Blondel, Matt Krump, Matti Lyra, Maxim Kolganov, mbillinger, mhg, Michael Heilman, Michael Patterson, Miroslav Batchkarov, Nelle Varoquaux, Nicolas, Nikolay Mayorov, Olivier Grisel, Omer Katz, Óscar Nájera, Pauli Virtanen, Peter Fischer, Peter Prettenhofer, Phil Roth, pianomania, Preston Parry, Raghav RV, Rob Zinkov, Robert Layton, Rohan Ramanath, Saket Choudhary, Sam Zhang, santi, saurabh.bansod, scls19fr, Sebastian Raschka, Sebastian Saeger, Shivan Sornarajah, SimonPL, sinhrks, Skipper Seabold, Sonny Hu, sseg, Stephen Hoover, Steven De Gryze, Steven Seguin, Theodore Vasiloudis, Thomas Unterthiner, Tiago Freitas Pereira, Tian Wang, Tim Head, Timothy Hopper, tokoroten, Tom Dupré la Tour, Trevor Stephens, Valentin Stolbunov, Vighnesh Birodkar, Vinayak Mehta, Vincent, Vincent Michel, vstolbunov, wangz10, Wei Xue, Yucheng Low, Yury Zhauniarovich, Zac Stewart, zhai_pro, Zichen Wang