Versión 0.12.1

08 de octubre de 2012

La versión 0.12.1 es una versión de corrección de errores sin características adicionales, sino que es un conjunto de correcciones de errores

Registro de cambios

Personas

Versión 0.12

4 de septiembre de 2012

Registro de cambios

Resumen de cambios en la API

  • El antiguo paquete scikits.learn ha desaparecido; todo el código debe importar de sklearn en su lugar, que fue introducido en 0.9.

  • En metrics.roc_curve, el arreglo thresholds se devuelve ahora con su orden invertido, para mantenerlo consistente con el orden de los fpr y tpr devueltos.

  • En los objetos hmm, como GaussianHMM, MultinomialHMM, etc., todos los parámetros deben pasarse al objeto al inicializarlo y no a través de fit. Ahora fit sólo aceptará los datos como parámetro de entrada.

  • Para todas las clases de SVM, un comportamiento defectuoso de gamma fue corregido. Antes, el valor gamma predeterminado sólo se calculaba la primera vez que se llamaba a fit y luego se almacenaba. Ahora se recalcula en cada llamada a fit.

  • Todas las clases Base son ahora meta clases abstractas para que no puedan ser instanciadas.

  • cluster.ward_tree ahora también devuelve el arreglo de los padres. Esto es necesario para la parada anticipada, en cuyo caso el árbol no está completamente construido.

  • En CountVectorizer los parámetros min_n y max_n se unieron al parámetro n_gram_range para permitir la búsqueda en cuadrícula de ambos a la vez.

  • En CountVectorizer, las palabras que sólo aparecen en un documento se ignoran ahora por defecto. Para reproducir el comportamiento anterior, establece min_df=1.

  • Corregida la inconsistencia de la API: linear_model.SGDClassifier.predict_proba ahora devuelve un arreglo de 2d cuando se ajusta a dos clases.

  • Se ha corregido una incoherencia de la API: discriminant_analysis.QuadraticDiscriminantAnalysis.decision_function y discriminant_analysis.LinearDiscriminantAnalysis.decision_function ahora devuelven 1d arreglos cuando se ajustan a dos clases.

  • La red de alfas utilizada para el ajuste de LassoCV y ElasticNetCV se almacena ahora en el atributo alphas_ en lugar de anular el parámetro init alphas.

  • Los modelos lineales en los que alfa se estima por validación cruzada almacenan el valor estimado en el atributo alpha_ en lugar de sólo alpha o best_alpha.

  • GradientBoostingClassifier ahora soporta staged_predict_proba, y staged_predict.

  • SVC y otras clases de SVM dispersas están ahora obsoletas. Todas las clases del módulo Máquinas de Vectores de Soporte ahora seleccionan automáticamente la representación dispersa o densa en función de la entrada.

  • Todos los algoritmos de conglomerado ahora interpretan el arreglo X dado a fit como datos de entrada, en particular SpectralClustering y AffinityPropagation que anteriormente esperaban matrices de afinidad.

  • Para los algoritmos de conglomerado que toman como parámetro el número deseado de conglomerados, este parámetro se llama ahora n_clusters.

Personas

Versión 0.11

7 de mayo de 2012

Registro de cambios

Destacados

Otros cambios

Resumen de cambios en la API

  • EnvolventeElíptica está ahora obsoleto - Por favor, utiliza EnvolventeElíptica en su lugar.

  • NeighborsClassifier y NeighborsRegressor han desaparecido del módulo Vecino más cercano. Utiliza las clases KNeighborsClassifier, RadiusNeighborsClassifier, KNeighborsRegressor y/o RadiusNeighborsRegressor en su lugar.

  • Las clases dispersas del módulo Descenso de Gradiente Estocástico están ahora obsoletas.

  • En GMM, DPGMM y VBGMM, los parámetros deben pasarse a un objeto al inicializarlo y no a través de fit. Ahora fit sólo aceptará los datos como parámetro de entrada.

  • los métodos rvs y decode del módulo GMM están ahora obsoletos. En su lugar, deben utilizarse sample y score o predict.

  • los atributos _scores y _pvalues en los objetos de selección de características univariantes están ahora obsoletos. En su lugar, se debe utilizar scores_ o pvalues_.

  • En LogisticRegression, LinearSVC, SVC y NuSVC, el parámetro class_weight es ahora un parámetro de inicialización, no un parámetro a ajustar. Esto hace posible las búsquedas en cuadrícula sobre este parámetro.

  • LFW data es ahora siempre de forma (n_samples, n_features) para ser coherente con el conjunto de datos de caras Olivetti. Utilice el atributo images y pairs para acceder a las formas de las imágenes naturales.

  • En LinearSVC, el significado del parámetro multi_class ha cambiado. Las opciones ahora son 'ovr' y 'crammer_singer', siendo 'ovr' la predeterminada. Esto no cambia el comportamiento por defecto pero esperamos que sea menos confuso.

  • La clase Vectorizer está obsoleta y se sustituye por TfidfVectorizer.

  • Se ha eliminado la estructura anidada del preprocesador/analizador para la extracción de características de texto. Todas esas características se pasan ahora directamente como argumentos planos del constructor a TfidfVectorizer y CountVectorizer, en particular se utilizan ahora los siguientes parámetros:

  • analyzer puede ser 'word' o 'char' para cambiar el esquema de análisis por defecto, o utilizar una llamada específica de python (como anteriormente).

  • Se han introducido el tokenizer y el preprocessor para que siga siendo posible personalizar esos pasos con la nueva API.

  • input controla explícitamente cómo interpretar la secuencia pasada a fit y predict: nombres de archivo, objetos de archivo o cadenas directas (byte o Unicode).

  • la decodificación del conjunto de caracteres es explícita y estricta por defecto.

  • el vocabulary, ajustado o no, se almacena ahora en el atributo vocabulary_ para ser coherente con las convenciones del proyecto.

  • La clase TfidfVectorizer ahora deriva directamente de CountVectorizer para hacer la búsqueda en cuadrícula trivial.

  • los métodos rvs en el módulo _BaseHMM están ahora obsoletos. En su lugar, se debe utilizar sample.

  • Se elimina la opción de poda de haces en el módulo _BaseHMM ya que es difícil de citar. Si estás interesado, puedes mirar en los códigos de la historia por git.

  • El cargador de formatos SVMlight soporta ahora archivos con índices de columna basados en cero y en uno, ya que ambos se dan «en la naturaleza».

  • Los argumentos de la clase ShuffleSplit son ahora consistentes con StratifiedShuffleSplit. Los argumentos test_fraction y train_fraction están obsoletos y han sido renombrados como test_size y train_size y pueden aceptar tanto float como int.

  • Los argumentos de la clase Bootstrap son ahora consistentes con StratifiedShuffleSplit. Los argumentos n_test y n_train están obsoletos y se han renombrado como test_size y train_size y pueden aceptar tanto float como int.

  • Argumento p añadido a las clases en Vecino más cercano para especificar una métrica Minkowski arbitraria para las búsquedas de vecinos más cercanos.

Personas

Versión 0.10

11 de enero de 2012

Registro de cambios

Resumen de cambios en la API

Aquí están las instrucciones de migración de código cuando se actualiza desde la versión 0.9 de scikit-learn:

  • Algunos estimadores que pueden sobrescribir sus entradas para ahorrar memoria tenían antes los parámetros overwrite_; éstos han sido sustituidos por los parámetros copy_ con el significado exactamente contrario.

    Esto afecta especialmente a algunos de los estimadores de linear_model. El comportamiento por defecto sigue siendo copiar todo lo que se pasa.

  • El cargador de conjuntos de datos SVMlight load_svmlight_file ya no permite cargar dos archivos a la vez; en su lugar, utiliza load_svmlight_files. Además, el parámetro (no utilizado) buffer_mb ha desaparecido.

  • Los estimadores dispersos del módulo Descenso de Gradiente Estocástico utilizan el vector de parámetros densos coef_ en lugar de sparse_coef_. Esto mejora significativamente el rendimiento del tiempo de prueba.

  • El módulo Estimación de covarianza tiene ahora un estimador robusto de la covarianza, el estimador del Determinante Mínimo de la Covarianza.

  • Las métricas de evaluación de conglomerados en metrics.cluster han sido refactorizadas, pero los cambios son compatibles con el pasado. Se han trasladado al metrics.cluster.supervised, junto con metrics.cluster.unsupervised que contiene el Coeficiente de Silueta.

  • La función permutation_test_score se comporta ahora de la misma manera que cross_val_score (es decir, utiliza la puntuación media de los pliegues)

  • Los generadores de validación cruzada utilizan ahora índices enteros (indices=True) por defecto en lugar de máscaras booleanas. Esto hace más intuitivo su uso con datos de matrices dispersas.

  • Las funciones utilizadas para la codificación dispersa, sparse_encode y sparse_encode_parallel se han combinado en sparse_encode, y las formas de los arreglos se han transpuesto para que sean consistentes con la configuración de la factorización de la matriz, a diferencia de la configuración de la regresión.

  • Se ha corregido un error en el manejo del formato de los archivos SVMlight/LibSVM; los archivos generados con dump_svmlight_file deberían volver a generarse. (Deberían seguir funcionando, pero accidentalmente se les ha añadido una columna extra de ceros)

  • La clase BaseDictionaryLearning ha sido sustituida por SparseCodingMixin.

  • fast_svd ha sido renombrado como randomized_svd y el sobremuestreo por defecto se fija ahora en 10 vectores aleatorios adicionales en lugar de duplicar el número de componentes a extraer. El nuevo comportamiento sigue el documento de referencia.

Personas

Las siguientes personas contribuyeron a scikit-learn desde la última versión:

Versión 0.9

21 de septiembre de 2011

scikit-learn 0.9 fue lanzado en septiembre de 2011, tres meses después de la versión 0.8 e incluye los nuevos módulos Aprendizaje múltiple, El proceso de Dirichlet así como varios algoritmos nuevos y mejoras en la documentación.

Esta versión también incluye el trabajo de aprendizaje de diccionario desarrollado por Vlad Niculae como parte del programa Google Summer of Code.

banner2 banner1 banner3

Registro de cambios

Resumen de cambios en la API

Aquí están las instrucciones de migración de código cuando se actualiza desde la versión 0.8 de scikit-learn:

  • El paquete scikits.learn fue renombrado como sklearn. Sigue existiendo un alias del paquete scikits.learn para la compatibilidad con versiones anteriores.

    Los proyectos de terceros que dependen de scikit-learn 0.9+ deben actualizar su código base. Por ejemplo, en Linux / MacOSX simplemente ejecute (¡haz una copia de seguridad primero!):

    find -name "*.py" | xargs sed -i 's/\bscikits.learn\b/sklearn/g'
    
  • Los estimadores ya no aceptan los parámetros del modelo como argumentos de ajuste: en su lugar, todos los parámetros deben pasarse únicamente como argumentos del constructor o utilizando el método ahora público set_params heredado de BaseEstimator.

    Algunos estimadores todavía pueden aceptar argumentos de palabras clave en el fit pero esto está restringido a los valores dependientes de los datos (por ejemplo, una matriz de Gram o una matriz de afinidad que se precalculan a partir de la matriz de datos X.

  • El paquete cross_val ha sido renombrado a cross_validation aunque también existe un alias del paquete cross_val para la compatibilidad con el pasado.

    Los proyectos de terceros que dependen de scikit-learn 0.9+ deben actualizar su código base. Por ejemplo, en Linux / MacOSX simplemente ejecute (¡haz una copia de seguridad primero!):

    find -name "*.py" | xargs sed -i 's/\bcross_val\b/cross_validation/g'
    
  • El argumento score_func de la función sklearn.cross_validation.cross_val_score ahora se espera que acepte y_test y y_predicted como únicos argumentos para las tareas de clasificación y regresión o X_test para los estimadores no supervisados.

  • El parámetro gamma para los algoritmos de la máquina de vectores de soporte se establece en 1 / n_features por defecto, en lugar de 1 / n_samples.

  • El sklearn.hmm ha sido marcado como huérfano: será eliminado de scikit-learn en la versión 0.11 a menos que alguien contribuya con documentación, ejemplos y arregle los problemas de estabilidad numérica.

  • sklearn.neighbors se ha convertido en un submódulo. Los dos estimadores disponibles anteriormente, NeighborsClassifier y NeighborsRegressor han sido marcados como obsoletos. Su funcionalidad se ha dividido en cinco nuevas clases: NearestNeighbors para búsquedas de vecinos no supervisadas, KNeighborsClassifier y RadiusNeighborsClassifier para problemas de clasificación supervisada, y KNeighborsRegressor y RadiusNeighborsRegressor para problemas de regresión supervisada.

  • sklearn.ball_tree.BallTree ha sido trasladado a sklearn.neighbors.BallTree. El uso de la primera generará una advertencia.

  • sklearn.linear_model.LARS() y las clases relacionadas (LassoLARS, LassoLARSCV, etc.) han sido renombradas a sklearn.linear_model.Lars().

  • Todas las métricas de distancia y núcleos en sklearn.metrics.pairwise tienen ahora un parámetro Y, que por defecto es None. Si no se da, el resultado es la distancia (o similitud del kernel) entre cada muestra en Y. Si se da, el resultado es la distancia por pares (o similitud del núcleo) entre las muestras en X a Y.

  • sklearn.metrics.pairwise.l1_distance se llama ahora manhattan_distance, y por defecto devuelve la distancia por pares. Para la distancia por componentes, establece el parámetro sum_over_features a False.

Los alias de paquetes de retrocompatibilidad y otras clases y funciones obsoletas se eliminarán en la versión 0.11.

Personas

38 personas han contribuido a esta publicación.

Versión 0.8

11 de mayo de 2011

scikit-learn 0.8 fue lanzado en mayo de 2011, un mes después del primer scikit-learn coding sprint «internacional» <https://github.com/scikit-learn/scikit-learn/wiki/Upcoming-events>`_ y está marcado por la inclusión de módulos importantes: Análisis de conglomerados jerárquicos, Descomposición cruzada, Factorización matricial no negativa (NMF o NNMF), soporte inicial para Python 3 y por importantes mejoras y correcciones de errores.

Registro de cambios

En esta versión se han introducido varios módulos nuevos:

Algunos otros módulos se han beneficiado de importantes mejoras o limpiezas.

Personas

Personas que hicieron posible esta publicación precedida por el número de confirmaciones:

Versión 0.7

2 de marzo de 2011

scikit-learn 0.7 fue lanzado en marzo de 2011, aproximadamente tres meses después de la versión 0.6. Esta versión está marcada por las mejoras en la velocidad de los algoritmos existentes como k-Nearest Neighbors y el algoritmo K-Means y por la inclusión de un algoritmo eficiente para el cálculo de la solución Ridge Generalized Cross Validation. A diferencia de la versión anterior, no se han añadido nuevos módulos a esta versión.

Registro de cambios

  • Mejoras en el rendimiento del muestreo del Modelo de Mezcla Gaussiana [Jan Schlüter].

  • Implementación de un Ridge eficiente con validación cruzada en RidgeCV [Mathieu Blondel]

  • Mejor manejo de la colinealidad y de la detención temprana en linear_model.lars_path [Alexandre Gramfort y Fabian Pedregosa].

  • Correcciones para el ordenamiento liblineal de las etiquetas y el signo de los coeficientes [Dan Yamins, Paolo Losi, Mathieu Blondel y Fabian Pedregosa].

  • Mejoras en el rendimiento del algoritmo Nearest Neighbors en espacios de alta dimensión [Fabian Pedregosa].

  • Mejoras de rendimiento para KMeans [Gael Varoquaux y James Bergstra].

  • Comprobación de la validez de las clases basadas en SVM [Mathieu Blondel].

  • Refactorización de NeighborsClassifier y neighbors.kneighbors_graph: se han añadido diferentes algoritmos para la búsqueda de k-Nearest Neighbor y se ha implementado un algoritmo más estable para encontrar los pesos del baricentro. También se ha añadido algo de documentación para desarrolladores para este módulo, ver notes_neighbors para más información [Fabian Pedregosa].

  • Mejoras en la documentación: Añadido RandomizedPCA y LogisticRegression a la referencia de la clase. También se han añadido referencias de matrices utilizadas para el conglomerado y otras correcciones [Gael Varoquaux, Fabian Pedregosa, Mathieu Blondel, Olivier Grisel, Virgile Fritsch , Emmanuelle Gouillart]

  • Se vincula decision_function en clases que hacen uso de liblinear, variantes densas y dispersas, como LinearSVC o LogisticRegression [Fabian Pedregosa].

  • Mejoras en el rendimiento y la API de metrics.euclidean_distances y de RandomizedPCA [James Bergstra].

  • Corregir problemas de compilación en NetBSD [Kamel Ibn Hassen Derouiche]

  • Permitir secuencias de entrada de diferentes longitudes en GaussianHMM [Ron Weiss].

  • Corrección de un error en la propagación de afinidades causado por una indexación incorrecta [Xinfan Meng]

Personas

Personas que hicieron posible esta publicación precedida por el número de confirmaciones:

Versión 0.6

21 de diciembre de 2010

scikit-learn 0.6 fue lanzado en diciembre de 2010. Se caracteriza por la inclusión de varios módulos nuevos y un cambio de nombre general de los antiguos. También se caracteriza por la inclusión de nuevos ejemplos, incluyendo aplicaciones a conjuntos de datos del mundo real.

Registro de cambios

  • Nuevo módulo de descenso de gradiente estocástico <http://scikit-learn.org/stable/modules/sgd.html>`_ por Peter Prettenhofer. El módulo viene con documentación completa y ejemplos.

  • Módulo svm mejorado: se ha reducido el consumo de memoria en un 50%, heurística para establecer automáticamente los pesos de las clases, posibilidad de asignar pesos a las muestras (ver SVM: Muestras ponderadas para un ejemplo).

  • Nuevo módulo Procesos Gaussianos de Vincent Dubourg. Este módulo también cuenta con una gran documentación y algunos ejemplos muy cuidados. Ver example_gaussian_process_plot_gp_regression.py o example_gaussian_process_plot_gp_probabilistic_classification_after_regression.py para ver lo que se puede hacer.

  • Ahora es posible utilizar el SVC multiclase de liblinear (opción multi_class en LinearSVC)

  • Nuevas funcionalidades y mejoras en el rendimiento de la extracción de características de texto.

  • Se ha mejorado el soporte de matrices dispersas, tanto en las clases principales (GridSearchCV) como en los módulos sklearn.svm.sparse y sklearn.linear_model.sparse.

  • Se han creado muchos ejemplos nuevos y una nueva sección que utiliza conjuntos de datos del mundo real. Estos incluyen: Ejemplo de reconocimiento de rostros mediante eigenfaces y SVM, Modelización de la distribución de las especies, Libsvm GUI, Autovector principal de Wikipedia y otros.

  • Algoritmo más rápido de Regresión de ángulo mínimo. Ahora es 2 veces más rápido que la versión de R en el peor caso y hasta 10 veces más rápido en algunos casos.

  • Algoritmo de descenso de coordenadas más rápido. En particular, la versión de ruta completa de lasso (linear_model.lasso_path) es más de 200 veces más rápida que antes.

  • Ahora es posible obtener estimaciones de probabilidad de un modelo LogisticRegression.

  • cambio de nombre de los módulos: el módulo glm ha pasado a llamarse linear_model, el módulo gmm se ha incluido en el modelo de mezcla más general y el módulo sgd se ha incluido en linear_model.

  • Muchas correcciones de errores y mejoras en la documentación.

Personas

Personas que hicieron posible esta publicación precedida por el número de confirmaciones:

Versión 0.5

11 de octubre de 2010

Registro de cambios

Nuevas clases

  • Soporte para matrices dispersas en algunos clasificadores de los módulos svm y linear_model (ver SVC, SVR, LinearSVC, Lasso, ElasticNet)

  • Nuevo objeto Pipeline para componer diferentes estimadores.

  • Rutinas de eliminación recursiva de características en el módulo Selección de características.

  • Adición de varias clases capaces de realizar validación cruzada en el módulo linear_model (LassoCV, ElasticNetCV, etc.).

  • Nueva implementación del algoritmo LARS, más eficiente. También se implementa la variante Lasso del algoritmo. Ver lars_path, Lars y LassoLars.

  • Nuevo módulo de Modelos de Markov Ocultos (ver clases GaussianHMM, MultinomialHMM, GMMHMM)

  • Nuevo módulo feature_extraction (ver class reference)

  • Nuevo algoritmo FastICA en el módulo sklearn.fastica

Documentación

Correcciones

  • Cambios en la API: adherir los nombres de las variables a PEP-8, dar nombres más significativos.

  • Correcciones para que el módulo svm se ejecute en un contexto de memoria compartida (multiprocesamiento).

  • También es posible generar archivos de formato látex (y, por tanto, PDF) a partir de los documentos de Sphinx.

Ejemplos

Dependencias externas

  • Joblib es ahora una dependencia de este paquete, aunque se entrega con (sklearn.externals.joblib).

Módulos eliminados

  • El módulo ann (Redes Neuronales Artificiales) ha sido eliminado de la distribución. Los usuarios que deseen este tipo de algoritmos deberían echar un vistazo a pybrain.

Miscelánea

  • Nuevo tema de esfinge para la página web.

Autores

La siguiente es una lista de autores para esta versión, precedida por el número de commits:

  • 262 Fabian Pedregosa

  • 240 Gael Varoquaux

  • 149 Alexandre Gramfort

  • 116 Olivier Grisel

  • 40 Vincent Michel

  • 38 Ron Weiss

  • 23 Matthieu Perrot

  • 10 Bertrand Thirion

  • 7 Yaroslav Halchenko

  • 9 VirgileFritsch

  • 6 Edouard Duchesnay

  • 4 Mathieu Blondel

  • 1 Ariel Rokem

  • 1 Matthieu Brucher

Versión 0.4

26 de agosto de 2010

Registro de cambios

Los cambios principales en esta versión incluyen:

  • Refactorización del algoritmo de descenso de coordenadas (Lasso, ElasticNet) y mejora de la velocidad (aproximadamente 100 veces más rápido).

  • Coordinar la refactorización de Descent (y la corrección de errores) para que sea coherente con el paquete GLMNET de R.

  • Nuevo módulo de métricas.

  • Nuevo módulo GMM aportado por Ron Weiss.

  • Implementación del algoritmo LARS (sin la variante Lasso por ahora).

  • rediseño del módulo feature_selection.

  • Migración a GIT como sistema de control de versiones.

  • Eliminación del módulo obsoleto attrselect.

  • Cambio de nombre de las extensiones privadas compiladas (se ha añadido un guión bajo).

  • Eliminación del código legado no mantenido.

  • Mejoras en la documentación (tanto en docstring como en rst).

  • Mejora del sistema de construcción para enlazar (opcionalmente) con MKL. Además, proporcionar una implementación de BLAS lite en caso de que no se encuentre un BLAS para todo el sistema.

  • Muchos ejemplos nuevos.

  • Muchas, muchas correcciones de errores …

Autores

La lista de committers de esta versión es la siguiente (precedida por el número de commits):

  • 143 Fabian Pedregosa

  • 35 Alexandre Gramfort

  • 34 Olivier Grisel

  • 11 Gael Varoquaux

  • 5 Yaroslav Halchenko

  • 2 Vincent Michel

  • 1 Chris Filo Gorgolewski

Versiones anteriores

Las versiones anteriores incluían contribuciones de Fred Mailhot, David Cooke, David Huard, Dave Morrill, Ed Schofield, Travis Oliphant y Pearu Peterson.