Versión 0.23.2¶
Modelos cambiados¶
Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
Fix atributo
inertia_decluster.KMeansycluster.MiniBatchKMeans.
Los detalles están listados en el registro de cambios a continuación.
(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)
Registro de cambios¶
sklearn.cluster¶
Fix Se corrigió un error en
cluster.KMeansdonde los errores de redondeo podían impedir que se declarara la convergencia cuandotol=0. #17959 por Jérémie du Boisberranger.Fix Se corrigió un error en
cluster.KMeansycluster.MiniBatchKMeansdonde la inercia informada se ponderaba incorrectamente por los pesos de la muestra. #17848 por Jérémie du Boisberranger.Fix Se corrigió un error en
cluster.MeanShiftconbin_seeding=True. Cuando el ancho de banda estimado es 0, el comportamiento es equivalente abin_seeding=False. #17742 por Jeremie du Boisberranger.Fix Se corrigió un error en
cluster.AffinityPropagation, que da conglomerados(clusters) incorrectos cuando el dtype del arreglo es float32. #17995 por Thomaz Santana y Amanda Dsouza.
sklearn.decomposition¶
Fix Se corrigió un error en
decomposition.MiniBatchDictionaryLearning.partial_fitque debería actualizar el diccionario iterando solo una vez sobre un minilote. #17433 por Chiara Marmo.Fix Evita desbordamientos en Windows en
decomposition.IncrementalPCA.partial_fitpara valores grandes debatch_sizeyn_samples. #17985 por Alan Butler y Amanda Dsouza.
sklearn.ensemble¶
Fix Se corrigió un error en
ensemble.MultinomialDeviancedonde el promedio de la pérdida logarítmica se calculaba incorrectamente como suma de pérdidas logarítmicas. #17694 por Markus Rempfler y Tsutomu Kusanagi.Fix Corregida la compatibilidad de
ensemble.StackingClassifieryensemble.StackingRegressorcon los estimadores que no definenn_features_in_. #17357 por Thomas Fan.
sklearn.feature_extraction¶
Fix Corregido un error en
feature_extraction.text.CountVectorizerdonde la invarianza del orden de las muestras se rompía cuando se establecíamax_featuresy las características tenían el mismo conteo. #18016 por Thomas Fan, Roman Yurchak, y Joel Nothman.
sklearn.linear_model¶
Fix
linear_model.lars_pathno sobrescribeXcuandoX_copy=TrueyGram='auto'. #17914 por Thomas Fan.
sklearn.manifold¶
Fix Se corrigió un error donde
metrics.pairwise_distancesdaba lugar a un error simetric='seuclidean'yXno es del tiponp.float64. #15730 por Forrest Koch.
sklearn.metrics¶
Fix Se corrigió un error en
metrics.mean_squared_errordonde el promedio de múltiples valores RMSE se calculaba incorrectamente como la raíz del promedio de múltiples valores MSE. #17309 por Swier Heeres.
sklearn.pipeline¶
Fix
pipeline.FeatureUniongenera una advertencia de obsolescencia cuando se incluyeNoneentransformer_list. #17360 por Thomas Fan.
sklearn.utils¶
Fix Corregida
utils.estimator_checks.check_estimatorpara que todos los casos de prueba soporten la etiqueta de estimadorbinary_only. #17812 por Bruno Charron.
Versión 0.23.1¶
18 de mayo de 2020
Registro de cambios¶
sklearn.cluster¶
Efficiency Se ha mejorado la eficiencia de
cluster.KMeanspara conjuntos de datos muy pequeños. En particular, ya no puede generar hilos inactivos. #17210 y #17235 por :user:`Jeremie du Boisberranger <jeremiedbb>.Fix Se corrigió un error en
cluster.KMeansdonde las ponderaciones de la muestra proporcionadas por el usuario se modificaban en su lugar. #17204 por Jeremie du Boisberranger.
Varios¶
Fix Se corrigió un error en el
reprde los estimadores de terceros que utilizan un parámetro**kwargsen su constructor, cuandochanged_onlyes True que es ahora el valor por defecto. #17205 por Nicolas Hug.
Versión 0.23.0¶
12 de mayo de 2020
Para una breve descripción de los principales aspectos de la versión, consulta Aspectos Destacados de scikit-learn 0.23.
Leyenda para registros de cambios¶
Major Feature : algo grande que antes no podías hacer.
Feature : algo que antes no podías hacer.
Efficiency : una característica existente ahora puede no requerir tanto cálculo o memoria.
Enhancement : una mejora menor variada.
Fix : algo que anteriormente no funcionaba según lo documentado – o según las expectativas razonables – ahora debería funcionar.
API Change : tendrás que cambiar tu código para tener el mismo efecto en el futuro; o una característica será eliminada en el futuro.
Aplicación de argumentos basados en palabras clave¶
En un esfuerzo por promover un uso claro y no ambiguo de la biblioteca, se espera que la mayoría de los parámetros de constructores y funciones se pasen como argumentos de palabra clave (es decir, utilizando la sintaxis param=valor) en lugar de posicionales. Para facilitar la transición, se genera un FutureWarning si un parámetro de palabra clave se utiliza como posicional. En la versión 1.0 (cambio de nombre de la 0.25), estos parámetros serán estrictamente de palabra clave, y se generará un TypeError. #15005 por Joel Nothman, Adrin Jalali, Thomas Fan, y Nicolas Hug. Ver SLEP009 para más detalles.
Modelos cambiados¶
Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
Fix
ensemble.BaggingClassifier,ensemble.BaggingRegressor, yensemble.IsolationForest.Fix
cluster.KMeansconalgorithm="elkan"yalgorithm="full".Fix
cluster.BirchFix
decomposition.PCAconn_components='mle'Enhancement
decomposition.NMFydecomposition.non_negative_factorizationcon entrada de tipo float32.API Change
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorFix
estimator_samples_enensemble.BaggingClassifier,ensemble.BaggingRegressoryensemble.IsolationForestFix
ensemble.StackingClassifieryensemble.StackingRegressorconsample_weightFix
linear_model.RANSACRegressorconsample_weight.Fix
metrics.mean_squared_errorconsquaredymultioutput='raw_values'.Fix
metrics.mutual_info_scorecon puntuaciones negativas.Fix
metrics.confusion_matrixcon longitud ceroy_trueyy_predFix
preprocessing.StandardScalerconpartial_fity entrada dispersa.Fix
preprocessing.Normalizercon norm=”max”Fix Cualquier modelo que utilice el solucionador
svm.libsvmosvm.liblinear, incluyendosvm.LinearSVC,svm.LinearSVR,svm.NuSVC,svm.NuSVR,svm.OneClassSVM,svm.SVC,svm.SVR,linear_model.LogisticRegression.Fix
tree.DecisionTreeClassifier,tree.ExtraTreeClassifieryensemble.GradientBoostingClassifierasí como el métodopredictdetree.DecisionTreeRegressor,tree.ExtraTreeRegressor, yensemble.GradientBoostingRegressory la entrada de sólo lectura float32 enpredict,decision_pathypredict_proba.
Los detalles están listados en el registro de cambios a continuación.
(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)
Registro de cambios¶
sklearn.cluster¶
Efficiency
cluster.Birchla implementación del método de predicción evita un alto consumo de memoria calculando la matriz de distancias utilizando un esquema en porciones. #16149 por Jeremie du Boisberranger y Alex Shacked.Efficiency Major Feature Las partes críticas de
cluster.KMeanstienen una implementación más optimizada. El paralelismo es ahora sobre los datos en lugar de sobre las inicializaciones permitiendo una mejor escalabilidad. #11950 por Jeremie du Boisberranger.Enhancement
cluster.KMeansahora soporta datos dispersos cuandosolver = "elkan". #11950 por Jeremie du Boisberranger.Enhancement
cluster.AgglomerativeClusteringtiene una implementación más rápida y eficiente en memoria de la agrupación de enlazamiento único. #11514 por Leland McInnes.Fix
cluster.KMeansconalgorithm="elkan"ahora converge contol=0como con elalgorithm="full"por defecto. #16075 por Erich Schubert.Fix Se corrigió un error en
cluster.Birchdonde el parámetron_clustersno podía tener un tiponp.int64. #16484 por Jeremie du Boisberranger.Fix
cluster.AgglomerativeCluClusteringañadir error específico cuando la matriz de distancia no es cuadrada yaffinity=precomputed. #16257 por Simona Maggio.API Change El parámetro
n_jobsdecluster.KMeans,cluster.SpectralCoclusteringycluster.SpectralBiclusteringestá obsoleto. Ahora utilizan el paralelismo basado en OpenMP. Para más detalles sobre cómo controlar el número de hilos, consulte nuestras notas sobre Paralelismo. #11950 por Jeremie du Boisberranger.API Change El parámetro
precompute_distancesdecluster.KMeansestá obsoleto. No tiene ningún efecto. #11950 por Jeremie du Boisberranger.API Change El parámetro
random_stateha sido añadido acluster.AffinityPropagation. #16801 por @rcwoolston y Chiara Marmo.
sklearn.compose¶
Efficiency
compose.ColumnTransformeres ahora más rápido cuando se trabaja con dataframes y se utilizan cadenas de caracteres para subconjuntos específicos de datos para transformadores. #16431 por Thomas Fan.Enhancement El método
get_feature_namesdecompose.ColumnTransformerahora soporta columnas'passthrough'', siendo el nombre de la característica el nombre de la columna para un dataframe, o `'xi'para el índice de la columnai. #14048 por Lewis Ball.Fix El método
get_feature_namesdecompose.ColumnTransformerahora devuelve resultados correctos cuando uno de los pasos del transformador se aplica en una lista vacía de columnas #15963 por Roman Yurchak.Fix
compose.ColumnTransformer.fitdará error al seleccionar un nombre de columna que no es único en el dataframe. #16431 por Thomas Fan.
sklearn.datasets¶
Efficiency
datasets.fetch_openmlha reducido el uso de memoria porque ya no almacena el flujo de texto completo del conjunto de datos en memoria. #16084 por Joel Nothman.Feature
datasets.fetch_california_housingahora soporta datos heterogéneos utilizando pandas al estableceras_frame=True. #15950 por Stephanie Andrews y Reshama Shaikh.Feature Los cargadores de conjuntos de datos incrustados(embedded )
load_breast_cancer,load_diabetes,load_digits,load_iris,load_linnerudyload_wineahora soportan la carga como unDataFramede pandas estableciendoas_frame=True. #15980 por @wconnell y Reshama Shaikh.Enhancement Se añadió el parámetro
return_centersendatasets.make_blobs, que puede utilizarse para devolver los centros de cada conglomerado. #15709 por @shivamgargsya y Venkatachalam N.Enhancement Las funciones
datasets.make_circlesydatasets.make_moonsaceptan ahora tuplas de dos elementos. #15707 por Maciej J Mikulski.Fix
datasets.make_multilabel_classificationahora generaValueErrorpara argumentosn_classes < 1Olength < 1. #16006 por Rushabh Vasani.API Change El
StreamHandlerfue eliminado desklearn.loggerpara evitar el doble registro de mensajes en los casos comunes donde se conecta un manejador al registrador raíz, y para seguir la recomendación de la documentación de registro de Python para que las bibliotecas dejen el manejo de los mensajes de registro a los usuarios y al código de la aplicación. #16451 por Christoph Deil.
sklearn.decomposition¶
Enhancement
decomposition.NMFydecomposition.non_negative_factorizationahora preserva el dtype float32. #16280 por Jeremie du Boisberranger.Enhancement
TruncatedSVD.transformes ahora más rápido en matrices dispersascscdadas. #16837 por @wornbb.Fix
decomposition.PCAcon un parámetro de punto flotante (float)n_components, elegirá exclusivamente los componentes que expliquen la varianza mayor quen_components. #15669 by Krishna ChaitanyaFix
decomposition.PCAconn_components='mle'ahora maneja correctamente los autovalores pequeños, y no infiere 0 como el número correcto de componentes. #16224 por Lisa Schwetlick, y Gelavizh Ahmadi y Marija Vlajic Wheeler y #16841 por Nicolas Hug.Fix El método
inverse_transformdedecomposition.KernelPCAahora aplica la transformación inversa correcta a los datos transformados. #16655 por Lewis Ball.Fix Se corrigió el error que provocaba que
decomposition.KernelPCAgenerara a veces uninvalid value encountered in multiply`(valor no válido encontrado en la multiplicación) durante `fit. #16718 por Gui Miotto.Feature Añadido el atributo
n_components_adecomposition.SparsePCAydecomposition.MiniBatchSparsePCA. #16981 por Mateusz Górski.
sklearn.ensemble¶
Major Feature
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorahora soportan sample_weight. #14696 por Adrin Jalali y Nicolas Hug.Feature La parada anticipada en
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorse determina ahora con un nuevo parámetroearly_stoppingen lugar den_iter_no_change. El valor por defecto es “auto”, que permite la parada anticipada si hay al menos 10.000 muestras en el conjunto de entrenamiento. #14516 by Johann Faouzi.Major Feature
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorahora soportan restricciones monotónicas, útiles cuando las características se supone que tienen un efecto positivo/negativo en el objetivo. #15582 por Nicolas Hug.API Change Añadido el indicador booleano
verbosea las clases:ensemble.VotingClassifieryensemble.VotingRegressor. #16069 por Sam Bail, Hanna Bruce MacDonald, Reshama Shaikh, y Chiara Marmo.API Change Se corrigió un error en
ensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressorque no respetaba el parámetromax_leaf_nodessi el criterio se alcanzaba al mismo tiempo que el criteriomax_depth. #16183 por Nicolas Hug.Fix Se cambió la convención del parámetro
max_depthdeensemble.HistGradientBoostingClassifieryensemble.HistGradientBoostingRegressor. La profundidad corresponde ahora al número de aristas para ir desde la raíz hasta la hoja más profunda. Ahora se permiten los tocones (árboles con una división). #16182 by Santhosh BFix Se corrigió un error en
ensemble.BaggingClassifier,ensemble.BaggingRegressoryensemble.IsolationForestdonde el atributoestimators_samples_no generaba los índices adecuados utilizados durantefit. #16437 por Jin-Hwan CHO.Fix Se corrigió un error en
ensemble.StackingClassifieryensemble.StackingRegressordonde el argumentosample_weightno se pasaba across_val_predictcuando se evaluaban los estimadores base en pliegues de validación cruzada para obtener la entrada del metaestimador. #16539 por Bill DeRose.Feature Añadida la opción adicional
loss="poisson"aensemble.HistGradientBoostingRegressor, que añade la desviación de Poisson con enlace logarítmico útil para modelar datos de conteo. #16692 por Christian LorentzenFix Se corrigió un error por el que
ensemble.HistGradientBoostingRegressoryensemble.HistGradientBoostingClassifierfallaban con múltiples llamadas a fit cuandowarm_start=True,early_stopping=True, y no hay validación establecida. #16663 por Thomas Fan.
sklearn.feature_extraction¶
Efficiency
feature_extraction.text.CountVectorizerahora ordena las características después de podarlas por frecuencia de documentos. Esto mejora el rendimiento en conjuntos de datos con grandes vocabularios combinados conmin_dfomax_df. #15834 por Santiago M. Mola.
sklearn.feature_selection¶
Enhancement Se añadió soporte para datos de salida múltiple en
feature_selection.RFEyfeature_selection.RFECV. #16103 por Divyaprabha M.API Change Añade
feature_selection.SelectorMixinde vuelta a la API pública. #16132 por @trimeta.
sklearn.gaussian_process¶
Enhancement
gaussian_process.kernels.Materndevuelve el kernel RBF cuandonu=np.inf. #15503 por Sam Dixon.Fix Se corrigió un error en
gaussian_process.GaussianProcessRegressorque provocaba que las desviaciones estándar predichas solo estuvieran entre 0 y 1 cuando no se utilizaba WhiteKernel. #15782 por @plgreenLIRU.
sklearn.impute¶
Enhancement
impute.IterativeImputeracepta entradas escalares y array-like paramax_valueymin_value. Las entradas array-like permiten que se especifique un máximo y minuto diferente para cada característica. #16403 por Narendra Mukherjee.Enhancement
impute.SimpleImputer,impute.KNNImputer, yimpute.IterativeImputeracepta el dtype entero anulable de pandas con valores faltantes. #16508 por Thomas Fan.
sklearn.inspection¶
Feature
inspection.partial_dependenceyinspection.plot_partial_dependenceahora soportan el método rápido de “recursion” paraensemble.RandomForestRegressorytree.DecisionTreeRegressor. #15864 por Nicolas Hug.
sklearn.linear_model¶
Major Feature Añadidos modelos lineales generalizados (GLM) con distribuciones de error no normales, incluyendo
linear_model.PoissonRegressor,linear_model.GammaRegressorylinear_model. TweedieRegressorque utilizan las distribuciones Poisson, Gamma y Tweedie respectivamente. #14300 por Christian Lorentzen, Roman Yurchak, y Olivier Grisel.Major Feature Soporte de
sample_weightenlinear_model.ElasticNetylinear_model.Lassopara la matriz densa de característicasX. #15436 por Christian Lorentzen.Efficiency
linear_model.RidgeCVylinear_model.RidgeClassifierCVahora no asigna un arreglo potencialmente grande para almacenar coeficientes duales para todos los hiperparámetros durantefit, ni un arreglo para almacenar todas las predicciones de error o LOO a menos questore_cv_valuesseaTrue. #15652 por Jérôme Dockès.Enhancement
linear_model.LassoLarsylinear_model.Larsahora soportan un parámetrojitterque añade ruido aleatorio al objetivo. Esto puede ayudar a la estabilidad en algunos casos extremos. #15179 por @angelaambroz.Fix Se corrigió un error donde si se pasaba un parámetro
sample_weightal método fit delinear_model.RANSACRegressor, no se pasaba albase_estimatorincluido durante el ajuste del modelo final. #15773 por Jeremy Alexandre.Fix Añadir el atributo
best_score_alinear_model.RidgeCVylinear_model.RidgeClassifierCV. #15655 por Jérôme Dockès.Fix Se corrigió un error en
linear_model.RidgeClassifierCVpara pasar una estrategia de puntuación específica. Antes de que el estimador interno diera la puntuación en lugar de las predicciones. #14848 por Venkatachalam N.Fix
linear_model.LogisticRegressionevitará ahora una iteración innecesaria cuandosolver='newton-cg'comprobando si es inferior o igual en lugar de estrictamente inferior para el máximo deabsgradytolenutils.optimize._newton_cg. #16266 por Rushabh Vasani.API Change Atributos públicos obsoletos
standard_coef_,standard_intercept_,average_coef_, yaverage_intercept_enlinear_model.SGDClassifier,linear_model. SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressor. #16261 by Carlos Brandt.Fix Efficiency
linear_model.ARDRegressiones más estable y mucho más rápido cuandon_samples > n_features. Ahora puede escalar a cientos de miles de muestras. La corrección de la estabilidad puede implicar cambios en el número de coeficientes distintos de cero y en la salida predicha. #16849 por Nicolas Hug.Fix Se corrigió un error en
linear_model.ElasticNetCV,linear_model.MultiTaskElasticNetCV,linear_model.LassoCVylinear_model.MultiTaskLassoCVdondepor el que el ajuste fallaba cuando se utilizaba el backend loky de joblib. #14264 por Jérémie du Boisberranger.Efficiency Acelera
linear_model.MultiTaskLasso,linear_model.MultiTaskLassoCV,linear_model.MultiTaskElasticNet,linear_model. MultiTaskElasticNetCVevitando las lentas llamadas a BLAS Nivel 2 en arreglos pequeñas #17021 por Alex Gramfort y Mathurin Massias.
sklearn.metrics¶
Enhancement
metrics.pairwise.pairwise_distances_chunkedpermite ahora que sureduce_funcno tenga valor de retorno, permitiendo operaciones in place. #16397 por Joel Nothman.Fix Se corrigió un error en
metrics.mean_squared_errorpara no ignorar el argumentosquaredcuando el argumentomultioutput='raw_values'. #16323 por Rushabh VasaniFix Se corrigió un error en
metrics.mutual_info_scoredonde se pudieron devolver puntuaciones negativas. #16362 por Thomas Fan.Fix Se corrigió un error en
metrics.confusion_matrixque generaba un error cuandoy_trueyy_predtenían longitud cero ylabelsno eraNone. Además, se produce un error cuando se da una lista vacía al parámetrolabels. #16442 por Kyle Parsons.API Change Cambiado el formato de los valores en
metrics.ConfusionMatrixDisplay.plotymetrics.plot_confusion_matrixpara escoger el formato más corto (ya sea “2g” o “d”). #16159 por Rick Mackenbach y Thomas Fan.API Change A partir de la versión 0.25,
metrics.pairwise.pairwise_distancesya no calculará automáticamente el parámetroVIpara la distancia de Mahalanobis y el parámetroVpara la distancia seuclidean (distancia euclidiana estandarizada) si se pasaY. El usuario deberá calcular este parámetro en los datos de entrenamiento de su elección y pasarlo apairwise_distances. #16993 por Joel Nothman.
sklearn.model_selection¶
Enhancement
model_selection.GridSearchCVymodel_selection.RandomizedSearchCVproduce información de rastreo de pila en los mensajes de advertencia de fallos de ajuste, además del tipo y los detalles emitidos previamente. #15622 por Gregory Morse.Fix
model_selection.cross_val_predictsoportamethod="predict_proba"cuandoy=None. #15918 por Luca Kubin.Fix
model_selection.fit_grid_pointestá obsoleto en 0.23 y se eliminará en 0.25. #16401 por Arie Pratama Sutiono
sklearn.multioutput¶
Feature
multioutput.MultiOutputRegressor.fitymultioutput.MultiOutputClassifier.fitahora pueden aceptarfit_paramspara pasar al métodoestimator.fitde cada paso. #15953 #15959 por Ke Huang.Enhancement
multioutput.RegressorChainahora soportafit_paramsparabase_estimatordurantefit. #16111 por Venkatachalam N.
sklearn.naive_bayes¶
Fix Se muestra un mensaje de error correctamente formateado en
naive_bayes.CategoricalNBcuando el número de características en la entrada difiere entrepredictyfit. #16090 por Madhura Jayaratne.
sklearn.neural_network¶
Efficiency
neural_network.MLPClassifieryneural_network.MLPRegressorha reducido la huella de memoria cuando se utilizan solucionadores estocásticos,'sgd'o'adam', yshuffle=True. #14075 por @meyer89.Fix Aumenta la estabilidad numérica de la función de pérdida logística en
neural_network.MLPClassifierrecortando las probabilidades. #16117 por Thomas Fan.
sklearn.inspection¶
Enhancement
inspection.PartialDependenceDisplayahora expone las líneas de deciles como atributos para que se puedan ocultar o personalizar. #15785 por Nicolas Hug
sklearn.preprocessing¶
Feature El argumento
dropdepreprocessing.OneHotEncoderahora aceptará el valor “if_binary” y eliminará la primera categoría de cada característica con dos categorías. #16245 por Rushabh Vasani.Enhancement El ndarray
drop_idx_depreprocessing.OneHotEncoderahora puede contenerNone, dondedrop_idx_[i] = Nonesignifica que no se elimina ninguna categoría para el índicei. #16585 por Chiara Marmo.Enhancement
preprocessing.MaxAbsScaler,preprocessing.MinMaxScaler,preprocessing.StandardScaler,preprocessing.PowerTransformer,preprocessing.QuantileTransformer,preprocessing.RobustScalerahora soporta el dtype entero anulable de pandas con valores faltantes. #16508 por Thomas Fan.Efficiency
preprocessing.OneHotEncoderes ahora más rápido en la transformación. #15762 por Thomas Fan.Fix Se corrigió un error en
preprocessing.StandardScalerque calculaba incorrectamente las estadísticas al llamar apartial_fiten entradas dispersas. #16466 por Guillaume Lemaitre.Fix Se corrigió un error en
preprocessing.Normalizercon norm=”max”, que no tomaba el valor absoluto de los valores máximos antes de normalizar los vectores. #16632 por Maura Pintor y Battista Biggio.
sklearn.semi_supervised¶
Fix
semi_supervised.LabelSpreadingysemi_supervised.LabelPropagationevita las advertencias de división por cero al normalizarlabel_distributions_. #15946 por @ngshya.
sklearn.svm¶
Fix Efficiency Mejora de los generadores de números aleatorios
libsvmyliblinearutilizados para seleccionar aleatoriamente las coordenadas en los algoritmos de descenso de coordenadas. Se utilizabarand()dependiente de la plataforma C, que sólo es capaz de generar números hasta32767en la plataforma Windows (ver esta entrada del blog) y además tiene una pobre potencia de aleatorización como sugiere esta presentación. Fue reemplazado con C++11mt19937, un Mersenne Twister que genera correctamente números aleatorios de 31bits/63bits en todas las plataformas. Además, el crudo postprocesador «modulo» utilizado para obtener un número aleatorio en un intervalo acotado fue reemplazado por el método Lemire ajustado, como se sugiere en esta entrada del blog. Cualquier modelo que utilice el solucionadorsvm.libsvmosvm.liblinear, incluyendosvm.LinearSVC,svm.LinearSVR,svm.NuSVC,svm.NuSVR,svm.OneClassSVM,svm.SVC,svm.SVR,linear_model.LogisticRegression, está afectado. En particular, los usuarios pueden esperar una mejor convergencia cuando el número de muestras (LibSVM) o el número de características (LibLinear) es grande. #13511 by Sylvain Marié.Fix Arreglado el uso de kernels personalizados que no toman entradas flotantes como los kernels de cadena en
svm.SVCysvm.SVR. Ten en cuenta que ahora se espera que los kernels personalizados validen su entrada cuando antes recibían arreglos numéricos válidos. #11296 por Alexandre Gramfort y Georgi Peev.API Change Los atributos
probA_yprobB_desvm.SVRysvm.OneClassSVMahora están obsoletos ya que no eran útiles. #15558 por Thomas Fan.
sklearn.tree¶
Fix El parámetro
rotatedetree.plot_treeno se utilizó y ha quedado obsoleto. #15806 por Chiara Marmo.Fix Corregido el soporte del arreglo de entrada float32 de sólo lectura en los métodos
predict,decision_pathypredict_probadetree.DecisionTreeClassifier,tree.ExtraTreeClassifieryensemble.GradientBoostingClassifierasí como el métodopredictdetree.DecisionTreeRegressor,tree.ExtraTreeRegressoryensemble.GradientBoostingRegressor. #16331 por Alexandre Batisse.
sklearn.utils¶
Major Feature Los estimadores ahora pueden mostrarse con una representación html enriquecida. Esto se puede activar en los cuadernos de Jupyter estableciendo
display='diagram'enset_config. El html en bruto puede ser devuelto utilizandoutils.estimator_html_repr. #14180 por Thomas Fan.Enhancement Mejora del mensaje de error en
utils.validation.column_or_1d. #15926 por Loïc Estève.Enhancement añadida advertencia en
utils.check_arraypara DataFrame disperso de pandas. #16021 por Rushabh Vasani.Enhancement
utils.check_arrayahora construye una matriz dispersa a partir de un DataFrame de pandas que contiene solo columnasSparseArray. #16728 por Thomas Fan.Enhancement
utils.validation.check_arraysoporta el tipo de dato entero anulable de pandas con valores faltantes cuandoforce_all_finitese establece comoFalseo'allow-nan'en cuyo caso los datos se convierten a valores de punto flotante donde los valorespd.NAson reemplazados pornp.nan. Como consecuencia, todos los transformadoressklearn.preprocessingque aceptan entradas numéricas con valores faltantes representados comonp.nanahora también aceptan ser suministrados directamente por dataframes de pandas con columnas de tipopd.Int*opd.Uint*que utilizanpd.NAcomo marcador de valores faltantes. #16508 por Thomas Fan.API Change Pasar clases a
utils.estimator_checks.check_estimatoryutils.estimator_checks.parametrize_with_checksestá ahora obsoleto, y el soporte para las clases será eliminado en 0.24. Pase instancias en su lugar. #17032 por Nicolas Hug.API Change Se eliminó la utilidad privada
_safe_tagsenutils.estimator_checks, por lo tanto todas las etiquetas deben obtenerse a través deestimator._get_tags(). Ten en cuenta que los Mixins comoRegressorMixindeben venir antes de las clases base en el MRO para que_get_tags()funcione correctamente. #16950 por Nicolas Hug.Fix
utils.all_estimatorsahora sólo devuelve estimadores públicos. #15380 por Thomas Fan.
Varios¶
Major Feature Añade una representación HTML de los estimadores para ser mostrados en un cuaderno de jupyter o jupyter lab. Esta visualización se activa estableciendo la opción
displayensklearn.set_config. #14180 por Thomas Fan.Enhancement
scikit-learnahora funciona conmypysin errores. #16726 por Roman Yurchak.API Change La mayoría de los estimadores ahora cuentan con un atributo
n_features_in_. Este atributo es igual al número de características pasadas al métodofit. Ver SLEP010 para más detalles. #16112 por Nicolas Hug.API Change Los estimadores tienen ahora una etiqueta
requires_yque es False por defecto excepto para los estimadores que heredan de~sklearn.base.RegressorMixino~sklearn.base.ClassifierMixin. Esta etiqueta se utiliza para garantizar que se genere un mensaje de error adecuado cuando se esperaba y pero se pasó None. #16622 por Nicolas Hug.API Change La configuración por defecto
print_changed_onlyse ha cambiado de False a True. Esto significa que elreprde los estimadores es ahora más conciso y sólo muestra los parámetros cuyo valor por defecto ha sido cambiado al imprimir un estimador. Puede restaurar el comportamiento anterior utilizandosklearn.set_config(print_changed_only=False). Además, ten en cuenta que siempre es posible inspeccionar rápidamente los parámetros de cualquier estimador utilizandoest.get_params(deep=False). #17061 por Nicolas Hug.
Colaboradores de código y documentación¶
Gracias a todos los que han contribuido al mantenimiento y la mejora del proyecto desde la versión 0.22, incluyendo:
Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang «Maxin» Tang