Versión 0.18.2

20 de junio de 2017

Última versión con soporte de Python 2.6

Scikit-learn 0.18 es la última versión importante de scikit-learn para soportar Python 2.6. Más adelante las versiones posteriores de scikit-learn requerirán Python 2.7 o superior.

Registro de cambios

Contribuyentes de código

Aman Dalmia, Loic Esteve, Nate Guerin, Sergei Lebedev

Versión 0.18.1

11 de noviembre de 2016

Registro de cambios

Mejoras (Enhancements)

Corrección de errores

Resumen de cambios en la API

Árboles y bosques

  • El parámetro min_weight_fraction_leaf de los clasificadores basados en árboles y regresores ahora asume pesos de muestra uniformes por defecto si el argumento sample_weight no se pasa a la función fit. Antes, el parámetro fue ignorado silenciosamente. #7301 por Nelson Liu.

  • La clonación/picking de las clases con criterio de división del árbol es ahora segura para la memoria #7680 por Ibraim Ganiev.

Modelos lineales, kernelizados y relacionados

  • La longitud de explained_variance_ratio de discriminant_analysis.LinearDiscriminantAnalysis cambió tanto para los solucionadores Eigen como SVD. El atributo tiene ahora una longitud de min(n_components, n_classes - 1). :issue:`7632 por JPFrancoia

  • Problema numérico con linear_model.RidgeCV en datos centrados cuando n_features > n_samples. #6178 por Bertrand Thirion

Versión 0.18

28 de septiembre de 2016

Última versión con soporte de Python 2.6

Scikit-learn 0.18 es la última versión importante de scikit-learn para soportar Python 2.6. Más adelante las versiones posteriores de scikit-learn requerirán Python 2.7 o superior.

Mejoras de selección de modelos y cambios de API

  • El módulo model_selection

    El nuevo módulo sklearn.model_selection, que agrupa las funcionalidades de los antiguos sklearn.cross_validation, sklearn.grid_search y sklearn.learning_curve, introduce nuevas posibilidades como la validación cruzada anidada y una mejor manipulación de las búsquedas de parámetros con Pandas.

    Muchas cosas permanecerán iguales, pero hay algunas diferencias clave. Lee a continuación para saber más sobre los cambios.

  • Separadores de CV independientes de datos que permiten validación cruzada anidada

    Los nuevos separadores de validación cruzada, definidos en el sklearn.model_selection, ya no son inicializados con ningún parámetro dependiente de datos como y. En su lugar, exponen un método split que toma los datos y produce un generador para las diferentes divisiones.

    Este cambio hace posible usar los separadores de validación cruzada para realizar validaciones cruzadas anidadas, facilitadas por model_selection.GridSearchCV y utilidades model_selection.RandomizedSearchCV.

  • El atributo cv_results_ mejorado

    El nuevo atributo cv_results_ (de model_selection.GridSearchCV y model_selection.RandomizedSearchCV) introducido en lugar del atributo grid_scores_ es un diccionario de arreglos 1D con elementos en cada arreglo correspondientes a las configuraciones de los parámetros (es decir, los candidatos a la búsqueda).

    El dictado cv_results_ puede ser fácilmente importado en pandas como un DataFrame para explorar los resultados de búsqueda.

    Los arreglos cv_results_ también incluyen las puntuaciones de entrenamiento para cada división de validación cruzada (con claves como 'split0_train_score'), así como su media ('mean_train_score') y desviación estándar ('std_train_score'). Para evitar el costo de evaluar la puntuación de entrenamiento, establezca return_train_score=False.

    Los rangos para los candidatos de búsqueda (basados en su puntuación de validación cruzada) están disponibles en cv_results_['rank_test_score'].

    Los valores de parámetro para cada parámetro se almacenan por separado como matrices numpy de objetos enmascarados. El valor, para ese candidato de búsqueda, se enmascarará si el parámetro correspondiente no es aplicable. Además, una lista de todos los diccionarios de parámetro se almacenan en cv_results_['params'].

  • Parámetros n_folds y n_iter renombrados a n_splits

    Algunos nombres de parámetros han cambiado: El parámetro n_folds en el nuevo model_selection.KFold, model_selection.GroupKFold (ver abajo para el cambio de nombre), y model_selection.StratifiedKFold ahora se renombra a n_splits. El parámetro n_iter en model_selection.ShuffleSplit, la nueva clase model_selection.GroupShuffleSplit y model_selection.StratifiedShuffleSplit ahora se renombra a n_splits.

  • Renombrar las clases separadoras que aceptan etiquetas de grupo junto con los datos

    Los separadores de validación cruzada LabelKFold, LabelShuffleSplit, LeaveOneLabelOut y LeavePLabelOut han sido renombrados a model_selection.GroupKFold, model_selection.GroupShuffleSplit, model_selection.LeaveOneGroupOut y model_selection.LeavePGroupsOut respectivamente.

    Ten en cuenta el cambio de forma singular a plural en model_selection.LeavePGroupsOut.

  • Ajustar etiquetas de parámetro renombradas a grupos

    El parámetro labels en el método split del recién renombrado separadores model_selection.GroupKFold, model_selection.LeaveOneGroupOut, model_selection.LeavePGroupsOut, model_selection.GroupShuffleSplit se renombra a groups siguiendo la nueva nomenclatura de sus nombres de clase.

  • Parámetro n_labels renombrado a n_groups

    El parámetro n_labels en el recientemente renombrado model_selection.LeavePGroupsOut se cambia a n_groups.

  • Puntuaciones de entrenamiento e información sobre los tiempos

    cv_results_ también incluye las puntuaciones de entrenamiento para cada división de validación cruzada (con claves como 'split0_train_score'), así como su media ('mean_train_score') y desviación estándar ('std_train_score'). Para evitar el costo de evaluar la puntuación de entrenamiento, establezca return_train_score=False.

    Adicionalmente la media y desviación estándar de los tiempos tomados para dividir, entrenar y puntuar el modelo en todas las divisiones de validación cruzada está disponible en la clave 'mean_time' y ``”std_time”` respectivamente.

Registro de cambios

Nuevas características

Clasificadores y Regresores

Otros Estimadores

Selección y evaluación del modelo

Mejoras (Enhancements)

Árboles y ensembles

  • Se ha añadido un nuevo criterio de división para tree.DecisionTreeRegressor, el error absoluto promedio. Este criterio también puede utilizarse en conjunto.ExtraTreesRegressor, ensemble.RandomForestRegressor, y los estimadores de potenciación de gradientes. #6667 por Nelson Liu.

  • Se añadió un criterio de detención temprana basado en impuridad ponderada para el crecimiento del árbol de decisiones. #6954 por Nelson Liu

  • Los estimadores aleatorios de bosques, árboles adicionales y árboles de decisión ahora tienen un método decision_path que devuelve la ruta de decisión de las muestras en el árbol. Por Arnaud Joly.

  • Un nuevo ejemplo ha sido añadido desvelando la estructura del árbol de decisiones. Por Arnaud Joly.

  • Bosque aleatorio, árboles extra, árboles de decisión y estimador de impulso de gradientes, aceptan el parámetro min_samples_split y min_samples_leaf proporcionado como un porcentaje de las muestras de entrenamiento. Por yelite y Arnaud Joly.

  • Los estimadores de gradiente aceptan el parámetro criterion para especificar el criterio de división utilizado en los árboles de decisión construidos. #6667 by Nelson Liu.

  • La huella de memoria se reduce (a veces grande) para ensemble.bagging.BaseBagging y las clases que heredan de ella, es decir, ensemble.BaggingClassifier, ensemble. aggingRegressor, y ensemble.IsolationForest, generando dinámicamente el atributo estimators_samples_ sólo cuando es necesario. Por David Staub.

  • Se añadieron los parámetros n_jobs y sample_weight para ensemble.VotingClassifier para adaptarse a los estimadores subyacentes en paralelo. #5805 por Ibraim Ganiev.

Modelos lineales, kernelizados y relacionados

Descomposición, aprendizaje múltiple y análisis de conglomerados

Preprocesamiento y selección de características

Evaluación del modelo y metaestimadores

Métricas

Varios

  • Se añadió el parámetro n_jobs a feature_selection.RFECV para calcular la puntuación en los pliegues de prueba en paralelo. Por Manoj Kumar

  • El código base no contiene archivos generados por cython C/C++: se generan durante la compilación. Los paquetes de distribución seguirán conteniendo archivos C/C++ generados. Por Arthur Mensch.

  • Reduce el uso de memoria para arerglos de entrada decimal de 32 bits de utils.sparse_func.mean_variance_axis y utils. parse_func.incr_mean_variance_axis soportando tipos fusionados de cython. Por :user:`YenChen Lin <yenchenlin>.

  • El ignore_warnings ahora acepta un argumento de categoría para ignorar solo las advertencias de un tipo especificado. Por Thierry Guillemot.

  • Se añadió el parámetro return_X_y y la opción de tipo de retorno (data, target) : tuple a load_iris dataset #7049, load_breast_cancer dataset #7152, load_digits dataset, load_diabetes dataset, load_linnerud dataset, load_boston dataset #7154 por Manvendra Singh.

  • Simplificación de la función clone, se ha eliminado el soporte para los estimadores que modifican los parámetros en __init__. #5540 por Andreas Müller.

  • Cuando se unpickling un estimador de scikit-learn en una versión diferente a la que el estimador fue entrenado, un UserWarning se eleva, ver la documentación sobre la persistencia del modelo para más detalles. (#7248) Por Andreas Muíller.

Corrección de errores

Árboles y ensembles

Modelos lineales, kernelizados y relacionados

Descomposición, aprendizaje múltiple y análisis de conglomerados

Preprocesamiento y selección de características

  • preprocessing.data._transform_selected ahora siempre pasa una copia de X para transformar la función cuando copy=True (#7194). Por Caio Oliveira.

Evaluación del modelo y metaestimadores

Métricas

  • Corregir error en metrics.silhouette_score en el que los clusters de tamaño 1 estaban anotados incorrectamente. Deberían obtener una puntuación de 0. Por Joel Nothman.

  • Corregir error en metrics.silhouette_samples para que ahora funcione con etiquetas arbitrarias, no solo aquellas que van desde 0 a n_clusters - 1.

  • Corregir error donde la información mutua esperada y ajustada eran incorrectas si las células de contingencia de cluster excedían 2**16. Por Joel Nothman.

  • metrics.pairwise.pairwise_distances ahora convierte arrays a arrays booleanos cuando se requiere en scipy.spatial.distance. #5460 por Tom Dupre la Tour.

  • Se corrigió el soporte de entrada dispersa en metrics.silhouette_score así como ejemplos ejemplos/text/document_clustering.py. Por YenChen Lin.

  • métrics.roc_curve y métricas.precision_recall_curve ya no redondea los valores y_score al crear curvas ROC; esto estaba causando problemas a los usuarios con muy pequeñas diferencias en puntuaciones (#7353).

Varios

  • model_selection.tests._search._check_param_grid ahora funciona correctamente con todos los tipos que extienden/implementan Sequence (excepto string), incluyendo range (Python 3.x) y xrange (Python 2.x). #7323 por Viacheslav Kovalevskyi.

  • utils.extmath.randomized_range_finder es más estable numéricamente cuando se solicitan muchas iteraciones de potencia, ya que aplica la normalización de LU por defecto. Si los problemas numéricos n_iter<2 son improbables, por lo tanto no se aplica ninguna normalización. Hay otras opciones de normalización disponibles: 'none', 'LU' y 'QR'. #5141 por Giorgio Patrini.

  • Corregir un error donde algunos formatos de la matriz scipy.sparse, y estimadores con ellos como parámetros, no pudieron ser pasados a base.clone. Por Loic Esteve.

  • datasets.load_svmlight_file ahora es capaz de leer valores QID de int. #7101 por Ibraim Ganiev.

Resumen de cambios en la API

Modelos lineales, kernelizados y relacionados

Descomposición, aprendizaje múltiple y análisis de conglomerados

  • El antiguo mixture.DPGM está obsoleto a favor del nuevo mixture.BayesianGaussianMixture (con el parámetro weight_concentration_prior_type='dirichlet_process'). La nueva clase resuelve los problemas computacionales de la clase antigua y calcula la mezcla Gaussiana con un proceso Dirichlet anterior más rápido que antes. #7295 por Wei Xue y Thierry Guillemot.

  • El antiguo mixture.VBGM está obsoleto a favor del nuevo mixture.BayesianGaussianMixture (con el parámetro weight_concentration_prior_type='dirichlet_distribution'). La nueva clase resuelve los problemas computacionales de la vieja clase y calcula la mezcla Variational Bayesian Gaussian más rápido que antes. #6651 por Wei Xue y Thierry Guillemot.

  • El antiguo mixture.GMM está obsoleto a favor del nuevo mixture.GaussianMixture. La nueva clase calcula la mezcla Gaussiana más rápido que antes y se han resuelto algunos problemas de computación. #6666 por Wei Xue y Thierry Guillemot.

Evaluación del modelo y metaestimadores

Contribuyentes de código

Aditya Joshi, Alejandro, Alexander Fabisch, Alexander Loginov, Alexander Minyushkin, Alexander Rudy, Alexandre Abadie, Alexandre Abraham, Alexandre Gramfort, Alexandre Saint, alexfields, Alvaro Ulloa, alyssaq, Amlan Kar, Andreas Mueller, andrew giessel, Andrew Jackson, Andrew McCulloh, Andrew Murray, Anish Shah, Arafat, Archit Sharma, Ariel Rokem, Arnaud Joly, Arnaud Rachez, Arthur Mensch, Ash Hoover, asnt, b0noI, Behzad Tabibian, Bernardo, Bernhard Kratzwald, Bhargav Mangipudi, blakeflei, Boyuan Deng, Brandon Carter, Brett Naul, Brian McFee, Caio Oliveira, Camilo Lamus, Carol Willing, Cass, CeShine Lee, Charles Truong, Chyi-Kwei Yau, CJ Carey, codevig, Colin Ni, Dan Shiebler, Daniel, Daniel Hnyk, David Ellis, David Nicholson, David Staub, David Thaler, David Warshaw, Davide Lasagna, Deborah, definitelyuncertain, Didi Bar-Zev, djipey, dsquareindia, edwinENSAE, Elias Kuthe, Elvis DOHMATOB, Ethan White, Fabian Pedregosa, Fabio Ticconi, fisache, Florian Wilhelm, Francis, Francis O’Donovan, Gael Varoquaux, Ganiev Ibraim, ghg, Gilles Louppe, Giorgio Patrini, Giovanni Cherubin, Giovanni Lanzani, Glenn Qian, Gordon Mohr, govin-vatsan, Graham Clenaghan, Greg Reda, Greg Stupp, Guillaume Lemaitre, Gustav Mörtberg, halwai, Harizo Rajaona, Harry Mavroforakis, hashcode55, hdmetor, Henry Lin, Hobson Lane, Hugo Bowne-Anderson, Igor Andriushchenko, Imaculate, Inki Hwang, Isaac Sijaranamual, Ishank Gulati, Issam Laradji, Iver Jordal, jackmartin, Jacob Schreiber, Jake Vanderplas, James Fiedler, James Routley, Jan Zikes, Janna Brettingen, jarfa, Jason Laska, jblackburne, jeff levesque, Jeffrey Blackburne, Jeffrey04, Jeremy Hintz, jeremynixon, Jeroen, Jessica Yung, Jill-Jênn Vie, Jimmy Jia, Jiyuan Qian, Joel Nothman, johannah, John, John Boersma, John Kirkham, John Moeller, jonathan.striebel, joncrall, Jordi, Joseph Munoz, Joshua Cook, JPFrancoia, jrfiedler, JulianKahnert, juliathebrave, kaichogami, KamalakerDadi, Kenneth Lyons, Kevin Wang, kingjr, kjell, Konstantin Podshumok, Kornel Kielczewski, Krishna Kalyan, krishnakalyan3, Kvle Putnam, Kyle Jackson, Lars Buitinck, ldavid, LeiG, LeightonZhang, Leland McInnes, Liang-Chi Hsieh, Lilian Besson, lizsz, Loic Esteve, Louis Tiao, Léonie Borne, Mads Jensen, Maniteja Nandana, Manoj Kumar, Manvendra Singh, Marco, Mario Krell, Mark Bao, Mark Szepieniec, Martin Madsen, MartinBpr, MaryanMorel, Massil, Matheus, Mathieu Blondel, Mathieu Dubois, Matteo, Matthias Ekman, Max Moroz, Michael Scherer, michiaki ariga, Mikhail Korobov, Moussa Taifi, mrandrewandrade, Mridul Seth, nadya-p, Naoya Kanai, Nate George, Nelle Varoquaux, Nelson Liu, Nick James, NickleDave, Nico, Nicolas Goix, Nikolay Mayorov, ningchi, nlathia, okbalefthanded, Okhlopkov, Olivier Grisel, Panos Louridas, Paul Strickland, Perrine Letellier, pestrickland, Peter Fischer, Pieter, Ping-Yao, Chang, practicalswift, Preston Parry, Qimu Zheng, Rachit Kansal, Raghav RV, Ralf Gommers, Ramana.S, Rammig, Randy Olson, Rob Alexander, Robert Lutz, Robin Schucker, Rohan Jain, Ruifeng Zheng, Ryan Yu, Rémy Léone, saihttam, Saiwing Yeung, Sam Shleifer, Samuel St-Jean, Sartaj Singh, Sasank Chilamkurthy, saurabh.bansod, Scott Andrews, Scott Lowe, seales, Sebastian Raschka, Sebastian Saeger, Sebastián Vanrell, Sergei Lebedev, shagun Sodhani, shanmuga cv, Shashank Shekhar, shawpan, shengxiduan, Shota, shuckle16, Skipper Seabold, sklearn-ci, SmedbergM, srvanrell, Sébastien Lerique, Taranjeet, themrmax, Thierry, Thierry Guillemot, Thomas, Thomas Hallock, Thomas Moreau, Tim Head, tKammy, toastedcornflakes, Tom, TomDLT, Toshihiro Kamishima, tracer0tong, Trent Hauck, trevorstephens, Tue Vo, Varun, Varun Jewalikar, Viacheslav, Vighnesh Birodkar, Vikram, Villu Ruusmann, Vinayak Mehta, walter, waterponey, Wenhua Yang, Wenjian Huang, Will Welch, wyseguy7, xyguo, yanlend, Yaroslav Halchenko, yelite, Yen, YenChenLin, Yichuan Liu, Yoav Ram, Yoshiki, Zheng RuiFeng, zivori, Óscar Nájera