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_replacementmediante 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_normyn_iter_without_progressno estaban siendo utilizados pormanifold.TSNE. #6497 por Sebastian SägerCorregir error para los valores de decisión de svm cuando
decision_function_shapeesovrensvm.SVC. La función de decisión desvm.SVCfue incorrecta desde las versiones 0.17.0 hasta 0.18.0. #7724 por Bing Tian DaiAtributo
explained_variance_ratiodediscriminant_analysis.LinearDiscriminantAnalysiscalculado 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
fitvarias veces enfeature_selection.SelectFromModel. #7756 por Andreas MüllerCorrige el problema en el método
partial_fitdemulticlase.OneVsRestClassifiercuando el número de clases usadas enpartial_fitera menor que el número total de clases en los datos. #7786 por Srivatsan RameshCorregir problema en
calibration.CalibratedClassifierCVdonde la suma de probabilidades de cada clase para un dato no era 1, yCalibratedClassifierCVahora 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.SelectFdrno implementó exactamente el procedimiento Benjamini-Hochberg. Anteriormente puede haber seleccionado menos características de las que debería. #7490 por Peng Meng.sklearn.manifold.LocallyLinearEmbeddingahora maneja correctamente las entradas enteras. #6282 por Jake Vanderplas.El parámetro
min_weight_fraction_leafde los clasificadores basados en árboles y regresores ahora asume pesos de muestra uniformes por defecto si el argumentosample_weightno se pasa a la funciónfit. Antes, el parámetro fue ignorado silenciosamente. #7301 por Nelson Liu.Problema numérico con
linear_model.RidgeCVen 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.NMFestablece su atributon_iters_entransform(). #7553 por Ekaterina Krivich.sklearn.linear_model.LogisticRegressionCVahora maneja correctamente las etiquetas de cadena. #5874 por Raghav RV.Se ha corregido un error donde
sklearn.model_selection.train_test_splitplanteó un error cuandostratifyes una lista de etiquetas de cadenas. #7593 por Raghav RV.Se ha corregido un error donde
sklearn.model_selection.GridSearchCVysklearn.model_selection.RandomizedSearchCVno 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_selectionahora 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 asplitproducen divisiones disímiles) pueden utilizarse como parámetrocv. Lasklearn.model_selection.GridSearchCVrealizará una validación cruzada de cada parámetro en la división producida por la primera llamadasplital divisor de validación cruzada. #7660 por Raghav RV.Corregir error donde
preprocessing.MultiLabelBinarizer.fit_transformdevolvió una matriz CSR inválida. #7750 por CJ Carey.Se ha corregido un error donde
metrics.pairwise.cosine_distancespodí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_leafde los clasificadores basados en árboles y regresores ahora asume pesos de muestra uniformes por defecto si el argumentosample_weightno 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_ratiodediscriminant_analysis.LinearDiscriminantAnalysis cambió tanto para los solucionadores Eigen como SVD. El atributo tiene ahora una longitud de min(n_components, n_classes - 1). :issue:`7632por JPFrancoiaProblema numérico con
linear_model.RidgeCVen 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_searchysklearn.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étodosplitque 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.GridSearchCVy utilidadesmodel_selection.RandomizedSearchCV.El atributo cv_results_ mejorado
El nuevo atributo
cv_results_(demodel_selection.GridSearchCVymodel_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 enpandascomo unDataFramepara 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_foldsen el nuevomodel_selection.KFold,model_selection.GroupKFold(ver abajo para el cambio de nombre), ymodel_selection.StratifiedKFoldahora se renombra an_splits. El parámetron_iterenmodel_selection.ShuffleSplit, la nueva clasemodel_selection.GroupShuffleSplitymodel_selection.StratifiedShuffleSplitahora 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,LeaveOneLabelOutyLeavePLabelOuthan sido renombrados amodel_selection.GroupKFold,model_selection.GroupShuffleSplit,model_selection.LeaveOneGroupOutymodel_selection.LeavePGroupsOutrespectivamente.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
labelsen el métodosplitdel recién renombrado separadoresmodel_selection.GroupKFold,model_selection.LeaveOneGroupOut,model_selection.LeavePGroupsOut,model_selection.GroupShuffleSplitse renombra agroupssiguiendo la nueva nomenclatura de sus nombres de clase.Parámetro n_labels renombrado a n_groups
El parámetro
n_labelsen el recientemente renombradomodel_selection.LeavePGroupsOutse 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.GaussianProcessClassifierygaussian_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.GaussianMixtureymixture.BayesianGaussianMixturereemplazan 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.RandomizedPCAahora está factorizada endecomposition.PCAy está disponible para llamar con el parámetrosvd_solver='randomized'. El número predeterminado den_iterpara'randomized'ha cambiado a 4. El comportamiento antiguo de PCA es recuperado porsvd_solver='full'. Un solucionador adicional llama aarpacky 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_classifyfeature_selection.mutual_info_regression. Estas funciones pueden utilizarse enfeature_selection.SelectKBestyfeature_selection.SelectPercentilecomo funciones de puntuación. Por Andrea Bravi y Nikolay Mayorov.Se añadió la clase
ensemble.IsolationForestpara detección de anomalías basada en bosques aleatorios. Por Nicolas Goix.Se añadió
algorithm="elkan"acluster.KMeansimplementando 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.TimeSeriesSplitpara 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_pathque 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_splitymin_samples_leafproporcionado como un porcentaje de las muestras de entrenamiento. Por yelite y Arnaud Joly.Los estimadores de gradiente aceptan el parámetro
criterionpara 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.BaseBaggingy 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_jobsysample_weightparaensemble.VotingClassifierpara 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.LinearSVCysvm.LinearSVRahora soportansample_weight. Por Imaculate.Añade el parámetro
lossalinear_model.RANSACRegressorpara 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.GaussianNBahora acepta los priors de clase independientes de datos a través del parámetropriors. Por Guillaume Lemaitre.linear_model.ElasticNetylinear_model.Lassoahora funcionan con los datos de entradanp.float32sin convertirlos ennp.float64. Esto permite reducir el consumo de memoria. #6913 por YenChen Lin.semi_supervised.LabelPropagationysemi_supervised.LabelSpreadingahora aceptan funciones arbitrarias del núcleo además de cadenasknnyrbf. #5762 de Utkarsh Upadhyay.
Descomposición, aprendizaje múltiple y análisis de conglomerados
Se añadió la función
inverse_transformadecomposition.NMFpara calcular la matriz de datos de la forma original. Por Anish Shah.cluster.KMeansycluster.MiniBatchKMeansahora funcionan con los datos de entradanp.float32ynp.float64sin 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.RobustScalerahora acepta el parámetroquantile_range. #5929 por Konstantin Podshumok.feature_extraction.FeatureHasherahora acepta valores de cadena. #6173 por Ryad Zenine y Devashish Deshpande.Ahora se pueden proporcionar argumentos de palabra clave a
funcenpreprocessing.FunctionTransformermediante el parámetrokw_args. Por Brian McFee.feature_selection.SelectKBestyfeature_selection.SelectPercentileahora acepta funciones de puntuación que toman X, y retornan solo las puntuaciones. Por Nikolay Mayorov.
Evaluación del modelo y metaestimadores
multiclass.OneVsOneClassifierymulticlass.OneVsRestClassifierahora soportanpartial_fit. Por Asish Panda y Philipp Bajando.Se añadió soporte para sustituir o desactivar los componentes
pipeline.Pipelineypipeline.FeatureUnionusando la interfazset_paramsque 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_probapara 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
labelsametrics.log_losspara proporcionar explícitamente las etiquetas cuando el número de clases eny_trueyy_preddifieren. #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_weightametrics.matthews_corrcoef. Por Jatin Shah y Raghav RV.Acelera
metrics.silhouette_scoreusando operaciones vectorizadas. Por Manoj Kumar.Agrega el parámetro
sample_weightametrics.confusion_matrixy :user:``. PorJatin Shah <DanielSidhion>.
Varios
Se añadió el parámetro
n_jobsafeature_selection.RFECVpara 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_axisyutils. parse_func.incr_mean_variance_axissoportando tipos fusionados de cython. Por :user:`YenChen Lin <yenchenlin>.El
ignore_warningsahora 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_yy la opción de tipo de retorno(data, target) : tupleaload_irisdataset #7049,load_breast_cancerdataset #7152,load_digitsdataset,load_diabetesdataset,load_linneruddataset,load_bostondataset #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
UserWarningse 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=1ya que se requieren al menos 2 muestras para dividir un nodo del árbol de decisiones. Por Arnaud Jolyensemble.VotingClassifierahora levantaNotFittedErrorsipredict,transformopredict_probason llamadas en el estimador no ajustado. Por Sebastian Raschka.Corregir error donde
ensemble.AdaBoostClassifieryensemble.AdaBoostRegressorfuncionarían mal si elrandom_statese corrigió (#7411). Por Joel Nothman.Corregir error en ensembles con aleatorización donde el conjunto no establecería
random_stateen estimadores base en un pipeline o anidación similar. (#7411). Nota, resultados paraensemble.BaggingClassifierensemble.BaggingRegressor,ensemble.AdaBoostClassifieryensemble.AdaBoostRegressorahora 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.SGDClassifierylinear_model.SGDRegressor(#6764). Por Wenhua Yang.Corregir error en
linear_model.LogisticRegressionCVdondesolver='liblinear'no aceptóclass_weights='balanced. (#6817). Por Tom Dupre la Tour.Corregir error en
neighbors.RadiusNeighborsClassifierdonde 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.ElasticNetpara que coincida con la salida densa en el caso de salida múltiple.
Descomposición, aprendizaje múltiple y análisis de conglomerados
decomposition.RandomizedPCAel número predeterminado deiterated_poweres 4 en lugar de 3. #5141 por Giorgio Patrini.utils.extmath.randomized_svdrealiza 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_componentses pequeño (< .1 * min(X.shape))n_iterse 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.PCAydecomposition.RandomizedPCA(ahora factorizado en PCA, ver las Nuevas características). Loscomponents_se almacenan sin blanquear. #5299 por Giorgio Patrini.Corregido error en
manifold.spectral_embeddingdonde 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.eigshen 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.LinearDiscriminantAnalysisahora devuelve resultados correctos. Por JPFrancoia
Preprocesamiento y selección de características
preprocessing.data._transform_selectedahora siempre pasa una copia deXpara transformar la función cuandocopy=True(#7194). Por Caio Oliveira.
Evaluación del modelo y metaestimadores
model_selection.StratifiedKFoldahora 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.StratifiedShuffleSplitdonde 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.StratifiedShuffleSplitpara que devuelva las divisiones del tamañotrain_sizeytest_sizeen todos los casos (#6472). Por Andreas Mucker.Validación cruzada de
OneVsOneClassifieryOneVsRestClassifierahora funciona con kernels precalculados. #7350 por Russell Smith.Corregir la delegación incompleta del método
predict_probademodel_selection.GridSearchCValinear_model.SGDClassifier(#7159) por Yichuan Liu.
Métricas
Corregir error en
metrics.silhouette_scoreen 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_samplespara 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_distancesahora 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_scoreasí como ejemplos ejemplos/text/document_clustering.py. Por YenChen Lin.métrics.roc_curveymétricas.precision_recall_curveya no redondea los valoresy_scoreal 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_gridahora 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_finderes 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<2son 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_fileahora es capaz de leer valores QID de int. #7101 por Ibraim Ganiev.
Resumen de cambios en la API¶
Modelos lineales, kernelizados y relacionados
residual_metricha sido obsoleto enlinear_model.RANSACRegressor. Usalossen 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.DPGMestá 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.VBGMestá 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.GMMestá 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_searchysklearn.learning_curvehan 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.GridSearchCVymodel_selection.RandomizedSearchCVestá 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_iteron_foldsde los antiguos divisores de CV se sustituyen por el nuevo parámetron_splitsya 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
classesfue renombrado alabelsenmetrics.hamming_loss. #7260 por Sebastián Vanrell.Las clases separadoras
LabelKFold,LabelShuffleSplit,LeaveOneLabelOutyLeavePLabelsOutson renombradas amodel_selection.GroupKFold,model_selection.GroupShuffleSplit,model_selection.LeaveOneGroupOutymodel_selection.LeavePGroupsOutrespectivamente. También el parámetrolabelsen el métodosplitdel recientemente renombrado separadoresmodel_selection.LeaveOneGroupOutymodel_selection.LeavePGroupsOutse renombra agroups. Además, enmodel_selection.LeavePGroupsOut, el parámetron_labelsse renombra an_groups. #6660 por Raghav RV.Los nombres de error y pérdida para los parámetros
scoringahora 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