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.Parallel
que 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
presort
enensemble.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.RobustScaler
pueden ser ajustadas en línea llamando apartial_fit
. Por Giorgio Patrini.La nueva clase
ensemble.VotingClassifier
implementa 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.RobustScaler
proporciona una alternativa apreprocessing.StandardScaler
para 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.MaxAbsScaler
proporciona una alternativa apreprocessing.MinMaxScaler
para 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.FunctionTransformer
convierte una función de Python en un objeto transformador compatible conPipeline
. Por Joe Jevnik.Las nuevas clases
cross_validation.LabelKFold
ycross_validation.LabelShuffleSplit
generan pliegues de entrenamiento-prueba, respectivamente, similares across_validation.KFold
ycross_validation.ShuffleSplit
, excepto que los pliegues están condicionados a un arreglo de etiquetas. Por Brian McFee, Jean Kossaifi y Gilles Louppe.decomposition.LatentDirichletAllocation
implementa 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
sag
implementa un descenso de gradiente medio estocástico (Stochastic Average Gradient descent) y está disponible tanto enlinear_model.LogisticRegression
como 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
cd
implementa un Descenso de Coordenadas endecomposition.NMF
. El solucionador anterior basado en Gradiente Proyectado todavía está disponible estableciendo el nuevo parámetrosolver
apg
, pero está obsoleto y será eliminado en 0.19, junto condecomposition.ProjectedGradientNMF
y los parámetrossparseness
,eta
,beta
ynls_max_iter
. Los nuevos parámetrosalpha
yl1_ratio
controlan la regularización L1 y L2, yshuffle
añade un paso de mezclado en el solucionadorcd
. Por Tom Dupre la Tour y Mathieu Blondel.
Mejoras¶
manifold.TSNE
ahora 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_.MeanShift
ahora soporta la ejecución en paralelo, como se implementa en la funciónmean_shift
. Por Martino Sorbaro.naive_bayes.GaussianNB
ahora soporta el ajuste consample_weight
. Por Jan Hendrik Metzen.dummy.DummyClassifier
ahora soporta una estrategia de ajuste previo. Por Arnaud Joly.Se añadió un método
fit_predict
paramixture.GM
y 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_start
a 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
stratify
across_validation.train_test_split
para la división estratificada. Por Miroslav Batchkarov.La función
tree.export_graphviz
soporta ahora mejoras estéticas paratree.DecisionTreeClassifier
ytree.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-cg
enlinear_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_weight
quedó 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_weight
para 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
labels
desklearn.metrics.f1_score
,sklearn.metrics.fbeta_score
,sklearn.metrics.recall_score
ysklearn.metrics.precision_score
ha 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_weight
alinear_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_scale
para proporcionar una función de interfaz paraMinMaxScaler
. Por Thomas Unterthiner.dump_svmlight_file
ahora 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.GridSearchCV
conn_jobs > 1
utilizado 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.DictLearning
con 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_classification
dé salida a uny
disperso. Por Kashif Rasul.cluster.DBSCAN
ahora acepta una matriz dispersa de distancias precalculadas, permitiendo un precálculo de distancias eficiente en memoria. Por Joel Nothman.tree.DecisionTreeClassifier
ahora presenta un métodoapply
para 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.GradientBoostingRegressor
yensemble.GradientBoostingClassifier
exponen ahora un métodoapply
para recuperar los índices de hoja en los que termina cada muestra en cada intento. Por Jacob Schreiber.Añade el soporte
sample_weight
alinear_model.LinearRegression
. Por Sonny Hu. (##4881)Añade
n_iter_without_progress
amanifold.TSNE
para controlar el criterio de detenimiento. Por Santi Villalba. (#5186)Se añadió el parámetro opcional
random_state
enlinear_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_start
enlinear_model.LogisticRegression
. Si se establece en True, los solucionadoreslbfgs
,newton-cg
ysag
serán inicializados con los coeficientes calculados en el ajuste anterior. Por Tom Dupre la Tour.Se añadió el soporte
sample_weight
alinear_model.LogisticRegression
para los solucionadoreslbfgs
,newton-cg
, ysag
. Por Valentin Stolbunov. Soporte añadido al solucionadorliblinear
. Por Manoj Kumar.Se añadió el parámetro opcional
presort
aensemble.GradientBoostingRegressor
yensemble.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_curve
para eliminar los umbrales innecesarios por defecto. Por Graham Clenaghan.Se añadió el metatransformador
feature_selection.SelectFromModel
que 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.GraphLasso
permite controlar por separado el criterio de convergencia del subproblema Elastic-Net mediante el parámetroenet_tol
.Se mejoró la verbosidad en
decomposition.DictionaryLearning
.ensemble.RandomForestClassifier
yensemble.RandomForestRegressor
ya 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
positive
alinear_model.Lars
ylinear_model.lars_path
para forzar que los coeficientes sean positivos. (#5131)Se añadió el parámetro
X_norm_squared
ametrics.pairwise.euclidean_distances
para proporcionar normas cuadradas precalculadas paraX
.Se añadió el método
fit_predict
apipeline.Pipeline
.Se añadió la función
preprocessing.min_max_scale
.
Corrección de errores¶
Se corrigió el no determinismo en
dummy.DummyClassifier
con salida multietiqueta dispersa. Por Andreas Müller.Se corrigió la forma de salida de
linear_model.RANSACRegressor
a(n_samples, )
. Por Andreas Müller.Se corrigió el error en
decomposition.DictLearning
cuandon_jobs < 0
. Por Andreas Müller.Se corrigió el error donde
grid_search.RandomizedSearchCV
podía consumir mucha memoria para cuadrículas discretas de gran tamaño. Por Joel Nothman.Se corrigió un error en
linear_model.LogisticRegressionCV
dondepenalty
fue ignorado en el ajuste final. Por Manoj Kumar.Se corrigió un error en
ensemble.forest.ForestClassifier
al 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
y
que es de la forma(n_samples, 1)
. Por Andreas Müller y Henry Lin. (#5431)Corrección en
cluster.KMeans
reasignación de conglomerados para entradas dispersas por Lars Buitinck.Se corrigió un error en
lda.LDA
que podía provocar matrices de covarianza asimétricas al utilizar la reducción(shrinkage). Por Martin Billinger.Se corrigió
cross_validation.cross_val_predict
para estimadores con predicciones dispersas. Por Buddha Prakash.Se corregió el método
predict_proba
delinear_model.LogisticRegression
para 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_fit
delinear_model.SGDClassifier
cuando 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.GaussianNB
que 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.RandomizedPCA
en 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.PLS
que producía una salida inestable y dependiente de la plataforma, y fallaba enfit_transform
. Por Arthur Mensch.Correcciones en la clase
Bunch
utilizada para almacenar conjuntos de datos.Se corrigió
ensemble.plot_partial_dependence
ignorando el parámetropercentiles
.Proporciona un
set
como vocabulario enCountVectorizer
que 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.Lasso
ylinear_model.ElasticNet
.Se corrigió el diseño inconsistente de la memoria en el solucionador de descenso de coordenadas que afectaba a
linear_model.DictionaryLearning
ycovariance.GraphLasso
. (#5337) Por Olivier Grisel.manifold.LocallyLinearEmbedding
ya 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.FeatureUnion
dondetransformer_weights
no se manejaba correctamente al realizar búsquedas en cuadrícula.Se corrigió un error en
linear_model.LogisticRegression
ylinear_model.LogisticRegressionCV
al 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_max
ydata_range
depreprocessing.MinMaxScaler
está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.StandardScaler
está obsoleto y es sustituido porscale_
; no estará disponible en 0.19. Por Giorgio Patrini.svm.SVC`
ysvm.NuSVC
tienen ahora un parámetrodecision_function_shape
para 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.LDA
yqda.QDA
se han movido adiscriminant_analysis.LinearDiscriminantAnalysis
ydiscriminant_analysis.QuadraticDiscriminantAnalysis
.Los parámetros
store_covariance
ytol
se han movido del método fit al constructor endiscriminant_analysis.LinearDiscriminantAnalysis
y los parámetrosstore_covariances
ytol
se han movido del método fit al constructor endiscriminant_analysis.QuadraticDiscriminantAnalysis
.Los modelos que heredan de
LearntSelectorMixin
ya 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.SelectFromModel
para eliminar las características (segúncoefs_
ofeature_importances_
) que estén por debajo de un determinado valor umbral.cluster.KMeans
vuelve 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_function
en todos los regresores ha quedado obsoleta y se eliminará en la versión 0.19. Utilizapredict
en su lugar.datasets.load_lfw_pairs
está obsoleto y se eliminará en la versión 0.19. Utilizadatasets.fetch_lfw_pairs
en su lugar.Se eliminó el módulo obsoleto ``hmm`.
Se eliminó el iterador de validación cruzada
Bootstrap
obsoleto.Las clases obsoletas
Ward
yWardAgglomerative
han sido eliminadas. Utiliza en su lugarclustering.AgglomerativeClustering
.cross_validation.check_cv
es ahora una función pública.La propiedad
residues_
delinear_model.LinearRegression
está obsoleta y se eliminará en la versión 0.19.El parámetro obsoleto
n_jobs
delinear_model.LinearRegression
ha sido movido al constructor.Se eliminó el parámetro obsoleto
class_weight
del métodofit
delinear_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_transform
dePipeline.pipeline
cambiará 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=0
ensvm.SVC
ysvm.SVR
para establecer automáticamente la gamma a1. / n_features
está 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