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)¶
Se mejoró la velocidad
sample_without_replacement
mediante la utilización de numpy.random.permutation para la mayoría de los casos. Como resultado, las muestras pueden diferir en esta versión para un estado aleatorio fijo. Estimadores afectados:Esto también afecta al método
datasets.make_classification
.
Corrección de errores¶
Corregir el problema donde los parámetros
min_grad_norm
yn_iter_without_progress
no estaban siendo utilizados pormanifold.TSNE
. #6497 por Sebastian SägerCorregir error para los valores de decisión de svm cuando
decision_function_shape
esovr
ensvm.SVC
. La función de decisión desvm.SVC
fue incorrecta desde las versiones 0.17.0 hasta 0.18.0. #7724 por Bing Tian DaiAtributo
explained_variance_ratio
dediscriminant_analysis.LinearDiscriminantAnalysis
calculado con SVD y solucionador Eigen son ahora de la misma longitud. #7632 por JPFrancoiaCorrige el problema en Selección de características univariantes donde las funciones de puntuación no aceptaron objetivos multi-etiqueta. #7676 por Mohammed Affan
Se corrigieron los parámetros de configuración al llamar a
fit
varias veces enfeature_selection.SelectFromModel
. #7756 por Andreas MüllerCorrige el problema en el método
partial_fit
demulticlase.OneVsRestClassifier
cuando el número de clases usadas enpartial_fit
era menor que el número total de clases en los datos. #7786 por Srivatsan RameshCorregir problema en
calibration.CalibratedClassifierCV
donde la suma de probabilidades de cada clase para un dato no era 1, yCalibratedClassifierCV
ahora maneja el caso en el que el conjunto de entrenamiento tiene menos número de clases que el total de datos. #7799 por Srivatsan RameshCorregir un error donde
sklearn.feature_selection.SelectFdr
no implementó exactamente el procedimiento Benjamini-Hochberg. Anteriormente puede haber seleccionado menos características de las que debería. #7490 por Peng Meng.sklearn.manifold.LocallyLinearEmbedding
ahora maneja correctamente las entradas enteras. #6282 por Jake Vanderplas.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 argumentosample_weight
no se pasa a la funciónfit
. Antes, el parámetro fue ignorado silenciosamente. #7301 por Nelson Liu.Problema numérico con
linear_model.RidgeCV
en datos centrados cuandon_features > n_samples
. #6178 por Bertrand ThirionLa clonación/picking de las clases con criterio de división del árbol es ahora segura para la memoria #7680 por Ibraim Ganiev.
Se ha corregido un error donde
decomposition.NMF
establece su atributon_iters_
entransform()
. #7553 por Ekaterina Krivich.sklearn.linear_model.LogisticRegressionCV
ahora maneja correctamente las etiquetas de cadena. #5874 por Raghav RV.Se ha corregido un error donde
sklearn.model_selection.train_test_split
planteó un error cuandostratify
es una lista de etiquetas de cadenas. #7593 por Raghav RV.Se ha corregido un error donde
sklearn.model_selection.GridSearchCV
ysklearn.model_selection.RandomizedSearchCV
no eran pickleable debido a un error de pickling ennp.ma.MaskedArray
. #7594 por Raghav RV.Todas las utilidades de validación cruzada en
sklearn.model_selection
ahora permiten una vez separadores de validación cruzada para el parámetrocv
. También los separadores de validación cruzada no deterministas (donde múltiples llamadas asplit
producen divisiones disímiles) pueden utilizarse como parámetrocv
. Lasklearn.model_selection.GridSearchCV
realizará una validación cruzada de cada parámetro en la división producida por la primera llamadasplit
al divisor de validación cruzada. #7660 por Raghav RV.Corregir error donde
preprocessing.MultiLabelBinarizer.fit_transform
devolvió una matriz CSR inválida. #7750 por CJ Carey.Se ha corregido un error donde
metrics.pairwise.cosine_distances
podía devolver una pequeña distancia negativa. #7732 por Artsion.
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 argumentosample_weight
no se pasa a la funciónfit
. 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
dediscriminant_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 JPFrancoiaProblema numérico con
linear_model.RidgeCV
en datos centrados cuandon_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 antiguossklearn.cross_validation
,sklearn.grid_search
ysklearn.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 comoy
. En su lugar, exponen un métodosplit
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 utilidadesmodel_selection.RandomizedSearchCV
.El atributo cv_results_ mejorado
El nuevo atributo
cv_results_
(demodel_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
) introducido en lugar del atributogrid_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 enpandas
como unDataFrame
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, establezcareturn_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 nuevomodel_selection.KFold
,model_selection.GroupKFold
(ver abajo para el cambio de nombre), ymodel_selection.StratifiedKFold
ahora se renombra an_splits
. El parámetron_iter
enmodel_selection.ShuffleSplit
, la nueva clasemodel_selection.GroupShuffleSplit
ymodel_selection.StratifiedShuffleSplit
ahora se renombra an_splits
.Renombrar las clases separadoras que aceptan etiquetas de grupo junto con los datos
Los separadores de validación cruzada
LabelKFold
,LabelShuffleSplit
,LeaveOneLabelOut
yLeavePLabelOut
han sido renombrados amodel_selection.GroupKFold
,model_selection.GroupShuffleSplit
,model_selection.LeaveOneGroupOut
ymodel_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étodosplit
del recién renombrado separadoresmodel_selection.GroupKFold
,model_selection.LeaveOneGroupOut
,model_selection.LeavePGroupsOut
,model_selection.GroupShuffleSplit
se renombra agroups
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 renombradomodel_selection.LeavePGroupsOut
se cambia an_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, establezcareturn_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
El módulo Gaussian Process ha sido reimplementado y ahora ofrece estimadores de clasificación y regresión a través de
gaussian_process.GaussianProcessClassifier
ygaussian_process.GaussianProcessRegressor
. Entre otras cosas, la nueva implementación soporta la ingeniería del núcleo, la optimización de parámetros hiperatorios basados en degradados o la muestreo de funciones de GP anterior y GP posterior. Se proporcionan extensos ejemplos y documentación por Jan Hendrik Metzen.Se añadió un nuevo algoritmo de aprendizaje supervisado: Multi-layer Perceptron #3204 por Issam H. Laradji
Se añadió
linear_model.HuberRegressor
, un modelo lineal robusto a los atolladeros. #5291 por Manoj Kumar.Se añadió el metaestimador
multioutput.MultiOutputRegressor
. Convierte regresores de salida individuales a regresores multi-salida al ajustar un regresor por salida. Por Tim Head.
Otros Estimadores
Nuevo
mixture.GaussianMixture
ymixture.BayesianGaussianMixture
reemplazan modelos de mezcla anteriores, empleando una inferencia más rápida para resultados más altos. #7295 por Wei Xue y Thierry Guillemot.La clase
decomposition.RandomizedPCA
ahora está factorizada endecomposition.PCA
y está disponible para llamar con el parámetrosvd_solver='randomized'
. El número predeterminado den_iter
para'randomized'
ha cambiado a 4. El comportamiento antiguo de PCA es recuperado porsvd_solver='full'
. Un solucionador adicional llama aarpack
y realiza truncado (no aleatorio) SVD. Por defecto, el mejor solucionador se selecciona en función del tamaño de la entrada y del número de componentes solicitados. #5299 por Giorgio Patrini.Se añadieron dos funciones para estimación de información mutua:
feature_selection.mutual_info_classif
yfeature_selection.mutual_info_regression
. Estas funciones pueden utilizarse enfeature_selection.SelectKBest
yfeature_selection.SelectPercentile
como funciones de puntuación. Por Andrea Bravi y Nikolay Mayorov.Se añadió la clase
ensemble.IsolationForest
para detección de anomalías basada en bosques aleatorios. Por Nicolas Goix.Se añadió
algorithm="elkan"
acluster.KMeans
implementando el algoritmo de K-Means de Elkan. Por Andreas Müller.
Selección y evaluación del modelo
Se añadió
metrics.cluster.fowlkes_mallows_score
, el Índice Fowlkes Mallows que mide la similitud de dos agrupaciones de un conjunto de puntos Por Arnaud Fouchet y Thierry Guillemot.Se añadió
metrics.calinski_harabaz_score
, que calcula la puntuación Calinski y Harabaz para evaluar el conjunto resultante de un conjunto de puntos. Por Arnaud Fouchet y Thierry Guillemot.Se añadió el nuevo separador de validación cruzada
model_selection.TimeSeriesSplit
para manejar los datos de la serie de tiempo. #6586 por YenChen LinLos iteradores de validación cruzada son reemplazados por separadores de validación cruzada disponibles desde
sklearn.model_selection
, permitiendo una validación cruzada anidada. Ver Mejoras de selección de modelos y cambios de API para más información. #4294 por Raghav RV.
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 enconjunto.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
ymin_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
, yensemble.IsolationForest
, generando dinámicamente el atributoestimators_samples_
sólo cuando es necesario. Por David Staub.Se añadieron los parámetros
n_jobs
ysample_weight
paraensemble.VotingClassifier
para adaptarse a los estimadores subyacentes en paralelo. #5805 por Ibraim Ganiev.
Modelos lineales, kernelizados y relacionados
En
linear_model.LogisticRegression
, el solucionador SAG está ahora disponible en el caso multinomial. #5251 por Tom Dupre la Tour.linear_model.RANSACRegressor
,svm.LinearSVC
ysvm.LinearSVR
ahora soportansample_weight
. Por Imaculate.Añade el parámetro
loss
alinear_model.RANSACRegressor
para medir el error en las muestras para cada prueba. Por Manoj Kumar.Predicción de eventos fuera de muestra con Regresión Isotónica (
isotonic.IsotonicRegression
) es ahora mucho más rápido (más de 1000x en pruebas con datos sintéticos). Por Jonathan Arfa.Regresión isotónica (
isotonic.IsotonicRegression
) ahora usa un mejor algoritmo para evitar el comportamiento deO(n^2)
en casos patológicos, y también es generalmente más rápido (##6691). Por Antony Lee.naive_bayes.GaussianNB
ahora acepta los priors de clase independientes de datos a través del parámetropriors
. Por Guillaume Lemaitre.linear_model.ElasticNet
ylinear_model.Lasso
ahora funcionan con los datos de entradanp.float32
sin convertirlos ennp.float64
. Esto permite reducir el consumo de memoria. #6913 por YenChen Lin.semi_supervised.LabelPropagation
ysemi_supervised.LabelSpreading
ahora aceptan funciones arbitrarias del núcleo además de cadenasknn
yrbf
. #5762 de Utkarsh Upadhyay.
Descomposición, aprendizaje múltiple y análisis de conglomerados
Se añadió la función
inverse_transform
adecomposition.NMF
para calcular la matriz de datos de la forma original. Por Anish Shah.cluster.KMeans
ycluster.MiniBatchKMeans
ahora funcionan con los datos de entradanp.float32
ynp.float64
sin convertirlos. Esto permite reducir el consumo de memoria usandonp.float32
. #6846 por Sebastian Säger y YenChen Lin.
Preprocesamiento y selección de características
preprocessing.RobustScaler
ahora acepta el parámetroquantile_range
. #5929 por Konstantin Podshumok.feature_extraction.FeatureHasher
ahora acepta valores de cadena. #6173 por Ryad Zenine y Devashish Deshpande.Ahora se pueden proporcionar argumentos de palabra clave a
func
enpreprocessing.FunctionTransformer
mediante el parámetrokw_args
. Por Brian McFee.feature_selection.SelectKBest
yfeature_selection.SelectPercentile
ahora acepta funciones de puntuación que toman X, y retornan solo las puntuaciones. Por Nikolay Mayorov.
Evaluación del modelo y metaestimadores
multiclass.OneVsOneClassifier
ymulticlass.OneVsRestClassifier
ahora soportanpartial_fit
. Por Asish Panda y Philipp Bajando.Se añadió soporte para sustituir o desactivar los componentes
pipeline.Pipeline
ypipeline.FeatureUnion
usando la interfazset_params
que potenciasklearn.grid_search
. Ver Selección de la reducción de la dimensionalidad con Pipeline y GridSearchCV por Joel Nothman y Robert McGibbon.El nuevo atributo
cv_results_
demodel_selection.GridSearchCV
(ymodel_selection.RandomizedSearchCV
) se puede importar fácilmente en pandas como unDataFrame
. Consulta Mejoras de selección de modelos y cambios de API para más información. #6697 por Raghav RV.Generalización de
model_selection.cross_val_predict
. Uno puede pasar nombres de métodos comopredict_proba
para ser usado en el marco de validación cruzada en lugar del “predict” predeterminado. Por Ori Ziv y Sears Merritt.Las puntuaciones de entrenamiento y el tiempo tomado para el entrenamiento seguido de puntuación para cada candidato de búsqueda están ahora disponibles en el dictado
cv_results_
. Vea Mejoras de selección de modelos y cambios de API para más información. #7325 por Eugene Chen y Raghav RV.
Métricas
Se añadió la bandera
labels
ametrics.log_loss
para proporcionar explícitamente las etiquetas cuando el número de clases eny_true
yy_pred
difieren. #7239 por Hong Guangguo con la ayuda de Mads Jensen y Nelson Liu.Soporta matrices de contingencia dispersas en la evaluación de cluster (
metrics.cluster.supervised
) para escalar a un gran número de clusters. #7419 por Gregory Stupp y Joel Nothman.Añade el parámetro
sample_weight
ametrics.matthews_corrcoef
. Por Jatin Shah y Raghav RV.Acelera
metrics.silhouette_score
usando operaciones vectorizadas. Por Manoj Kumar.Agrega el parámetro
sample_weight
ametrics.confusion_matrix
y :user:``. PorJatin Shah <DanielSidhion>
.
Varios
Se añadió el parámetro
n_jobs
afeature_selection.RFECV
para calcular la puntuación en los pliegues de prueba en paralelo. Por Manoj KumarEl 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
yutils. 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
aload_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
Bosque aleatorio, árboles extra, y la optimización de degradados no aceptarán más
min_samples_split=1
ya que se requieren al menos 2 muestras para dividir un nodo del árbol de decisiones. Por Arnaud Jolyensemble.VotingClassifier
ahora levantaNotFittedError
sipredict
,transform
opredict_proba
son llamadas en el estimador no ajustado. Por Sebastian Raschka.Corregir error donde
ensemble.AdaBoostClassifier
yensemble.AdaBoostRegressor
funcionarían mal si elrandom_state
se corrigió (#7411). Por Joel Nothman.Corregir error en ensembles con aleatorización donde el conjunto no establecería
random_state
en estimadores base en un pipeline o anidación similar. (#7411). Nota, resultados paraensemble.BaggingClassifier
ensemble.BaggingRegressor
,ensemble.AdaBoostClassifier
yensemble.AdaBoostRegressor
ahora diferirán de las versiones anteriores. Por Joel Nothman.
Modelos lineales, kernelizados y relacionados
Se corrigió un cálculo de gradiente incorrecto para
loss='squared_epsilon_insensitive'
enlinear_model.SGDClassifier
ylinear_model.SGDRegressor
(#6764). Por Wenhua Yang.Corregir error en
linear_model.LogisticRegressionCV
dondesolver='liblinear'
no aceptóclass_weights='balanced
. (#6817). Por Tom Dupre la Tour.Corregir error en
neighbors.RadiusNeighborsClassifier
donde se produjo un error cuando había aterradores que estaban siendo etiquetados y se especificó una función de peso (#6902). Por LeonieBorne.Corregir la función de decisión dispersa de
linear_model.ElasticNet
para que coincida con la salida densa en el caso de salida múltiple.
Descomposición, aprendizaje múltiple y análisis de conglomerados
decomposition.RandomizedPCA
el número predeterminado deiterated_power
es 4 en lugar de 3. #5141 por Giorgio Patrini.utils.extmath.randomized_svd
realiza 4 iteraciones de poder por defecto, en vez o 0. En la práctica esto es suficiente para obtener una buena aproximación de los verdaderos eigenvalues/vectores en presencia del ruido. Cuandon_components
es pequeño (< .1 * min(X.shape)
)n_iter
se establece en 7, a menos que el usuario especifique un número mayor. Esto mejora la precisión con pocos componentes. #5299 por Giorgio Patrini.Se ha corregido la incoherencia de blanqueo/no blanqueo entre los componentes de
decomposition.PCA
ydecomposition.RandomizedPCA
(ahora factorizado en PCA, ver las Nuevas características). Loscomponents_
se almacenan sin blanquear. #5299 por Giorgio Patrini.Corregido error en
manifold.spectral_embedding
donde el diagnóstico de la matriz Laplaciana innormalizada se estableció incorrectamente en 1. #4995 por Peter Fischer.Se corrigió la inicialización incorrecta de
utils.arpack.eigsh
en todas las ocurrencias. Afectacluster.bicluster.SpectralBiclustering
,descomposición.KernelPCA
,manifold.LocallyLinearEmbedding
, ymanifold.SpectralEmbedding
(#5012). Por Peter Fischer.Atributo
explained_variance_ratio_
calculado con el solucionador SVD dediscriminant_analysis.LinearDiscriminantAnalysis
ahora devuelve resultados correctos. Por JPFrancoia
Preprocesamiento y selección de características
preprocessing.data._transform_selected
ahora siempre pasa una copia deX
para transformar la función cuandocopy=True
(#7194). Por Caio Oliveira.
Evaluación del modelo y metaestimadores
model_selection.StratifiedKFold
ahora plantea un error si todas las n_labels para clases individuales son menores que n_folds. #6182 por Devashish Deshpande.Corregido error en
model_selection.StratifiedShuffleSplit
donde el tren y la muestra de prueba podrían superponerse en algunos casos de borde, vea #6121 para más detalles. Por Loic Esteve.Corregir en
sklearn.model_selection.StratifiedShuffleSplit
para que devuelva las divisiones del tamañotrain_size
ytest_size
en todos los casos (#6472). Por Andreas Mucker.Validación cruzada de
OneVsOneClassifier
yOneVsRestClassifier
ahora funciona con kernels precalculados. #7350 por Russell Smith.Corregir la delegación incompleta del método
predict_proba
demodel_selection.GridSearchCV
alinear_model.SGDClassifier
(#7159) por Yichuan Liu.
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 enscipy.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
ymétricas.precision_recall_curve
ya no redondea los valoresy_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/implementanSequence
(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éricosn_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 abase.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
residual_metric
ha sido obsoleto enlinear_model.RANSACRegressor
. Usaloss
en su lugar. Por Manoj Kumar.El acceso a atributos públicos
.X_
y.y_
ha sido desaprobado enisotonic.IsotonicRegression
. Por Jonathan Arfa.
Descomposición, aprendizaje múltiple y análisis de conglomerados
El antiguo
mixture.DPGM
está obsoleto a favor del nuevomixture.BayesianGaussianMixture
(con el parámetroweight_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 nuevomixture.BayesianGaussianMixture
(con el parámetroweight_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 nuevomixture.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
El
sklearn.cross_validation
,sklearn.grid_search
ysklearn.learning_curve
han sido obsoletos y las clases y funciones han sido reorganizadas en el módulosklearn.model_selection
. Consulta Mejoras de selección de modelos y cambios de API para más información. #4294 por Raghav RV.El atributo
grid_scores_
demodel_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
está obsoleto a favor del atributocv_results_
. Consulta Mejoras de selección de modelos y cambios de API para más información. #6697 por Raghav RV.Los parámetros
n_iter
on_folds
de los antiguos divisores de CV se sustituyen por el nuevo parámetron_splits
ya que puede proporcionar una interfaz consistente y sin ambigüedades para representar el número de divisiones tren-prueba. #7187 por YenChen Lin.El parámetro
classes
fue renombrado alabels
enmetrics.hamming_loss
. #7260 por Sebastián Vanrell.Las clases separadoras
LabelKFold
,LabelShuffleSplit
,LeaveOneLabelOut
yLeavePLabelsOut
son renombradas amodel_selection.GroupKFold
,model_selection.GroupShuffleSplit
,model_selection.LeaveOneGroupOut
ymodel_selection.LeavePGroupsOut
respectivamente. También el parámetrolabels
en el métodosplit
del recientemente renombrado separadoresmodel_selection.LeaveOneGroupOut
ymodel_selection.LeavePGroupsOut
se renombra agroups
. Además, enmodel_selection.LeavePGroupsOut
, el parámetron_labels
se renombra an_groups
. #6660 por Raghav RV.Los nombres de error y pérdida para los parámetros
scoring
ahora son prefijados por'neg_'
, tales comoneg_mean_squared_error
. Las versiones no prefijadas están obsoletas y serán eliminadas en la versión 0.20. #7261 por Tim Head.
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