Versión 0.20.4¶
30 de julio de 2019
Esta es una versión de corrección de errores con algunas correcciones aplicadas a la versión 0.20.3.
Registro de cambios¶
La versión empaquetada de joblib se actualizó de 0.13.0 a 0.13.2.
sklearn.cluster¶
Fix Se ha corregido un error en
cluster.KMeanspor el que la inicialización de KMeans++ podía provocar raramente un IndexError. #11756 por Joel Nothman.
sklearn.compose¶
Fix Se ha corregido un problema en
compose.ColumnTransformerpor el que el uso de DataFrames cuyo orden de columnas difiere entre :func:fity :func:transformpodía llevar a pasar silenciosamente columnas incorrectas al transformadorremainder. #14237 porAndreas Schuderer <schuderer>.
sklearn.decomposition¶
Fix Se ha corregido un error en
cross_decomposition.CCAmejorando la estabilidad numérica cuandoYes cercano a cero. #13903 por Thomas Fan.
sklearn.model_selection¶
Fix Se ha corregido un error por el que
model_selection.StratifiedKFoldbaraja las muestras de cada clase con el mismorandom_state, haciendo queshuffle=Truesea ineficaz. #13124 por Hanmin Qin.
sklearn.neighbors¶
Fix Se ha corregido un error en
neighbors.KernelDensityque no podía restaurarse desde un pickle si se había utilizadosample_weight. #13772 por Aditya Vyas.
Versión 0.23¶
1 de marzo de 2019
Esta es una versión de corrección de errores con algunas mejoras menores en la documentación y en las características lanzadas en 0.20.0.
Registro de cambios¶
sklearn.cluster¶
Fix Se ha corregido un error en
cluster.KMeanspor el que el cálculo era de un solo hilo cuandon_jobs > 1on_jobs = -1. #12949 por Prabakaran Kumaresshan.
sklearn.compose¶
Fix Corregido un error en
compose.ColumnTransformerpara manejar índices negativos en la lista de columnas de los transformadores. #12946 por Pierre Tallotte.
sklearn.covariance¶
Fix Corregida una regresión en
covariance.graphical_lassopara que el cason_features=2sea tratado correctamente. #13276 por Aurélien Bellet.
sklearn.decomposition¶
Fix Se corrigió un error en
decomposition.sparse_encodedonde el cálculo era un solo hilo cuandon_jobs > 1on_jobs = -1. #13005 por Prabakaran Kumaresshan.
sklearn.datasets¶
Efficiency
sklearn.datasets.fetch_openmlahora carga los datos por streaming, evitando un alto uso de memoria. #13312 por Joris Van den Bossche.
sklearn.feature_extraction¶
Fix Se ha corregido un error en
feature_extraction.text.CountVectorizerque provocaba que la matriz de rasgos dispersos tuviera precisiones deindptreindicescontradictorias bajo vocabularios muy grandes. #11295 por Gabriel Vacaliuc.
sklearn.impute¶
Fix añadir soporte para datos no numéricos en
sklearn.impute.MissingIndicatorque no era soportado mientrassklearn.impute.SimpleImputerlo soportaba para algunas estrategias de imputación. #13046 por Guillaume Lemaitre.
sklearn.linear_model¶
Fix Corregido un error en
linear_model.MultiTaskElasticNetylinear_model.MultiTaskLassoque se rompía cuandowarm_start = True. #12360 por Aakanksha Joshi.
sklearn.preprocessing¶
Fix Se ha corregido un error en
preprocessing.KBinsDiscretizeren el questrategy='kmeans'falla con un error durante la transformación debido a bordes de recipientes sin clasificar. #13134 por Sandro Casagrande.Fix Se ha corregido un error en
preprocessing.OneHotEncoderpor el que la obsolescencia decategorical_featuresse manejaba incorrectamente en combinación conhandle_unknown='ignore'. #12881 por Joris Van den Bossche.Fix Los bins cuyo ancho es demasiado pequeño (es decir, <= 1e-8) se eliminan con una advertencia en
preprocessing.KBinsDiscretizer. #13165 por Hanmin Qin.
sklearn.svm¶
Fix Se ha corregido un error en
svm.SVC,svm.NuSVC,svm.SVR,svm.NuSVRysvm.OneClassSVMen el que la opciónscaledel parámetrogammase define erróneamente como1 / (n_características * X.std()). Ahora se define como1 / (n_características * X.var()). #13221 by Hanmin Qin.
Colaboradores de código y documentación¶
Con agradecimiento a:
Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Andreas Mueller, Aurélien Bellet, bertrandhaut, Bharat Raghunathan, Dowon, Emmanuel Arias, Fibinse Xavier, Finn O’Shea, Gabriel Vacaliuc, Gael Varoquaux, Guillaume Lemaitre, Hanmin Qin, joaak, Joel Nothman, Joris Van den Bossche, Jérémie Méhault, kms15, Kossori Aruku, Lakshya KD, maikia, Manuel López-Ibáñez, Marco Gorelli, MarcoGorelli, mferrari3, Mickaël Schoentgen, Nicolas Hug, pavlos kallis, Pierre Glaser, pierretallotte, Prabakaran Kumaresshan, Reshama Shaikh, Rohit Kapoor, Roman Yurchak, SandroCasagrande, Tashay Green, Thomas Fan, Vishaal Kapoor, Zhuyi Xue, Zijie (ZJ) Poh
Versión 0.20.2¶
20 de diciembre de 2018
Esta es una versión de corrección de errores con algunas mejoras menores en la documentación y en las características lanzadas en 0.20.0.
Modelos modificados¶
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 modelado (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
sklearn.neighborswhenmetric=='jaccard'(bug fix)uso de métricas
'seuclidean'o ``”mahalanobis”` en algunos casos (corrección de errores)
Registro de cambios¶
sklearn.compose¶
Fix Se ha corregido un problema en
compose.make_column_transformerque genera un error inesperado cuando las columnas son pandas Index o pandas Series. #12704 por Hanmin Qin.
sklearn.metrics¶
Fix Se ha corregido un error en
metrics.pairwise_distancesymetrics.pairwise_distances_chunkeddonde los parámetrosVde las métricas"seuclidean"yVIde las métricas"mahalanobis"se calculaban después de dividir los datos en trozos en lugar de calcularse previamente en los datos completos. #12701 por Jeremie du Boisberranger.
sklearn.neighbors¶
Fix Se ha corregido la función de distancia jaccard
sklearn.neighbors.DistanceMetricpara que devuelva 0 cuando se comparan dos vectores totalmente nulos. #12685 por Thomas Fan.
sklearn.utils¶
Fix La llamada a
utils.check_arrayenpandas.Seriescon datos categóricos, que daba un error en 0.20.0, ahora devuelve de nuevo la salida esperada. #12699 por Joris Van den Bossche.
Colaboradores de código y documentación¶
Con agradecimiento a:
adanhawth, Adrin Jalali, Albert Thomas, Andreas Mueller, Dan Stine, Feda Curic, Hanmin Qin, Jan S, jeremiedbb, Joel Nothman, Joris Van den Bossche, josephsalmon, Katrin Leinweber, Loic Esteve, Muhammad Hassaan Rafique, Nicolas Hug, Olivier Grisel, Paul Paczuski, Reshama Shaikh, Sam Waterbury, Shivam Kotwalia, Thomas Fan
Versión 0.20.1¶
21 de noviembre de 2018
Esta es una versión de corrección de errores con algunas mejoras menores de documentación y mejoras a las características publicadas en 0.20.0. Ten en cuenta que también incluimos algunos cambios de API en esta versión, así que puedes obtener algunas advertencias adicionales después de actualizar de 0.20.0 a 0.20.1.
Modelos modificados¶
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 modelado (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
decomposition.IncrementalPCA(bug fix)
Registro de cambios¶
sklearn.cluster¶
Efficiency hacer que
cluster.MeanShiftya no intente hacer paralelismo anidado ya que la sobrecarga perjudicaría el rendimiento significativamente cuandon_jobs > 1. #12159 por Olivier Grisel.Fix Se ha corregido un error en
cluster.DBSCANcon el gráfico de vecinos dispersos precalculado, que añadía explícitamente ceros en la diagonal incluso cuando ya estaban presentes. #12105 por Tom Dupre la Tour.
sklearn.compose¶
Fix Se ha corregido un problema en
compose.ColumnTransformeral apilar columnas con tipos no convertibles a numérico. #11912 por Adrin Jalali.API Change
compose.ColumnTransformerahora aplica elsparse_returholdincluso si todos los resultados de la transformación son esparcidos. #12304 por Andreas Muñller.API Change
compose.make_column_transformerahora espera(transformer, columnas)en lugar de(columns, transformer)para mantener consistente concompose.ColumnTransformer. #12339 por Adrin Jalali.
sklearn.datasets¶
Fix
datasets.fetch_openmlpara usar correctamente la caché local. #12246 por Jan N. van Rijn.Fix
datasets.fetch_openmlpara manejar correctamente los atributos ignorados y los atributos de identificación de fila. #12330 por Jan N. van Rijn.Fix Se ha corregido el desbordamiento de enteros en
datasets.make_classificationpara valores del parámetron_informativemayores de 64. #10811 por Roman Feldbauer.Fix Se ha corregido el atributo
DESCRdel conjunto de datos de olivetti para que apunte a la ubicación correcta endatasets.fetch_olivetti_faces. #12441 por Jérémie du BoisberrangerFix
datasets.fetch_openmlpara volver a intentar descargar cuando la lectura de caché local falla. #12517 por Thomas Fan.
sklearn.decomposition¶
Fix Se corrigió una regresión en
decomposition.IncrementalPCAdonde 0.20.0 produjo un error si el número de muestras en el lote final para ajustar IncrementalPCA era menor que n_components. #12234 por Ming Li.
sklearn.ensemble¶
Fix Se ha corregido un error que afectaba mayormente a
ensemble.RandomForestClassifierdonde ``class_weight=”balanced_subsample”` falló con más de 32 clases. #12165 por Joel Nothman.Fix Se corrigió un error que afectaba a
ensemble.BaggingClassifier,ensemble.BaggingRegressoryensemble.IsolationForest, dondemax_featuresa veces fue redondeado a cero. #12388 por Connor Tann.
sklearn.feature_extraction¶
Fix Se corrigió una regresión en v0.20.0 donde
feature_extraction.text.CountVectorizery otros vectorizadores de texto podían error durante la validación de palabras de parada con preprocesadores o tokenizadores personalizados. #12393 por Roman Yurchak.
sklearn.linear_model¶
Fix
linear_model.SGDClassifiery variantes conearly_stopping=Trueno usarían una división de validación consistente en el caso multiclase, y esto causaría un fallo al usar esos estimadores como parte de la búsqueda de parámetros paralelos o la validación cruzada. #12122 por Olivier Grisel.Fix Se ha corregido un error que afectaba a
SGDClassifieren el caso multiclase. Cada paso uno contra todos (one-versus-all) se ejecuta en una llamada ajoblib.Parallely mutando un parámetro común, causando un fallo de segmentación si se llama dentro de un backend utilizando procesos y no hilos. Ahora usamosrequire=sharedmemen la creación de instancia dejoblib.Parallel. #12518 por Pierre Glaser y Olivier Grisel.
sklearn.metrics¶
Fix Se corrigió un error en
metrics.pairwise.pairwise_distances_argmin_minque devolvió la raíz cuadrada de la distancia cuando el parámetro métrico se estableció en «euclidean». #12481 por Jérémie du Boisberranger.Fix Se ha corregido un error en
metrics.pairwise.pairwise_distances_chunkedque no se aseguró de que el diagonal es cero para las distancias euclidanas. #12612 por Andreas Muller.API Change La
metrics.calinski_harabaz_scoreha sido renombrada ametrics.calinski_harabasz_scorey será eliminada en la versión 0. 3. #12211 por Lisa Thomas, Mark Hannel y Melissa Ferrari.
sklearn.mixture¶
Fix Asegúrate de que el método
fit_predictdemixture.GaussianMixtureymixture.BayesianGaussianMixturesiempre rinden asignaciones consistentes conajustadoseguido deprediceincluso si el criterio de convergencia es demasiado suelto o no cumplido. #12451 por Olivier Grisel.
sklearn.neighbors¶
Fix forzar el backend de paralelismo a
threadingparaneighbors.KDTreeyneighbors.BallTreeen Python 2.7 para evitar errores de pickling causados por la serialización de sus métodos. #12171 por Thomas Moreau.
sklearn.preprocessing¶
Fix Se ha corregido error en
preprocessing.OrdinalEncoderal pasar las categorías especificadas manualmente. #12365 por Joris Van den Bossche.Fix Se ha corregido un error en
preprocessing.KBinsDiscretizerdonde el métodotransformmuta el atributo_encoder. El métodotransformes ahora seguro para los hilos. #12514 por Hanmin Qin.Fix Se ha corregido un error en
preprocessing.PowerTransformerdonde la transformación de Yeo-Johnson era incorrecta para los parámetros de lambda fuera de[0, 2]#12522 por Nicolas Hug.Fix Se corrigió un error en
preprocessing.OneHotEncoderdonde falló la transformación cuando se estableció para ignorar cadenas numéricas desconocidas de diferentes longitudes #12471 por Gabriel Marzinotto.API Change El valor predeterminado del argumento
methodenpreprocessing.power_transformcambiará debox-coxayeo-johnsonpara que coincida conpreprocessing.PowerTransformeren la versión 0.23. Un FutureWarning se eleva cuando se utiliza el valor predeterminado. #12317 por Eric Chang.
sklearn.utils¶
Fix Usar float64 para acumulador medio para evitar problemas de precisión de punto flotante en
preprocessing.StandardScalerydecomposition.IncrementalPCAal usar conjuntos de datos float32. #12338 por bauks.Fix La llamada a
utils.check_arrayenpandas.Seriescon datos categóricos, que daba un error en 0.20.0, ahora devuelve de nuevo la salida esperada. #12625 por Andreas Müller
Varios¶
Fix Cuando se utiliza joblib del sitio configurando la variable de entorno
SKLEARN_SITE_JOBLIB, añadió compatibilidad con joblib 0. 1 además de 0.12+. #12350 por Joel Nothman y Roman Yurchak.Fix Asegúrate de evitar levantar
FutureWarningal llamar anp.vstackcon número 1. 6 y posteriores (utilice las expresiones de la lista en lugar de las expresiones del generador en muchas ubicaciones de la base de código de la scikit). #12467 por Olivier Grisel.API Change Se eliminaron todas las menciones de
sklearn.externals.joblib, y métodos joblib obsoletos expuestos ensklearn.utils, excepto porutils.parallel_backendyutils.register_parallel_backend, que permiten a los usuarios configurar el cálculo paralelo en scikit-learn. Otras funcionalidades son parte de joblib. paquete y deberían ser usadas directamente, instalándolo. El objetivo de este cambio es prepararse para no avalar el trabajo en la futura versión de la ciencia-aprendizaje. #12345 por Thomas Moreau
Colaboradores de código y documentación¶
Con agradecimiento a:
^__^, Adrin Jalali, Andrea Navarrete, Andreas Mueller, bauks, BenjaStudio, Cheuk Ting Ho, Connossor, Corey Levinson, Dan Stine, daten-kieker, Denis Kataev, Dillon Gardner, Dmitry Vukolov, Dougal J. Sutherland, Edward J Brown, Eric Chang, Federico Caselli, Gabriel Marzinotto, Gael Varoquaux, GauravAhlawat, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, JackLangerman, Jacopo Notarstefano, janvanrijn, jdethurens, jeremiedbb, Joel Nothman, Joris Van den Bossche, Koen, Kushal Chauhan, Lee Yi Jie Joel, Lily Xiong, mail-liam, Mark Hannel, melsyt, Ming Li, Nicholas Smith, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Olivier Grisel, Peter Hausamann, Pierre Glaser, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Ramil Nugmanov, Rebekah Kim, Reshama Shaikh, Rohan Singh, Roman Feldbauer, Roman Yurchak, Roopam Sharma, Sam Waterbury, Scott Lowe, Sebastian Raschka, Stephen Tierney, SylvainLan, TakingItCasual, Thomas Fan, Thomas Moreau, Tom Dupré la Tour, Tulio Casagrande, Utkarsh Upadhyay, Xing Han Lu, Yaroslav Halchenko, Zach Miller
Versión 0.20.0¶
25 de septiembre de 2018
Este paquete de versiones se encuentra en una montaña de correcciones de errores, características y mejoras para la biblioteca Scikit-learn, y mejoras en la documentación y ejemplos. ¡Gracias a nuestros colaboradores!
Este lanzamiento está dedicado a la memoria de Raghav Rajagopalan.
Advertencia
La versión 0.20 es la última versión de scikit-learn para soportar Python 2.7 y Python 3.4. Scikit-learn 0.21 requerirá Python 3.5 o superior.
Destacados¶
Hemos intentado mejorar nuestro soporte para casos de uso comunes de la ciencia de datos, incluyendo valores faltantes, variables categóricas, datos heterogéneos y características con distribuciones inusuales. Los valores faltantes en las características, representados por NaNs, ahora son aceptados en el preprocesamiento de columnas como escaladores. Cada característica se ajusta sin tener en cuenta NaNs, y los datos que contienen NaNs pueden ser transformados. El nuevo módulo impute proporciona estimadores para aprender a pesar de que faltan datos.
ColumnTransformer maneja el caso donde diferentes características o columnas de un pandas.DataFrame necesitan un preprocesamiento diferente. Las columnas Categóricas de pandas o cadenas ahora pueden ser codificadas con OneHotEncoder o OrdinalEncoder.
TransformedTargetRegressor ayuda cuando el objetivo de regresión necesita ser transformado para ser modelado. PowerTransformer y KBinsDiscretizer se unen a QuantileTransformer como transformaciones no lineales.
Más allá de esto, hemos añadido el soporte de sample_weight a varios estimadores (incluyendo KTechns, BayesianRidge y ernelDensity) y criterios de detención mejorados en otros (incluyendo MLPRegressor, GradientBoostingRegressor y SGDRegressor).
Esta versión también es la primera en ir acompañada de un Glosario de Términos Comunes y Elementos de la API desarrollado por Joel Nothman. El glosario es un recurso de referencia para ayudar a los usuarios y colaboradores a familiarizarse con la terminología y las convenciones utilizadas en Scikit-learn.
Disculpa si tu contribución no ha entrado en los destacados. Hay mucho aquí…
Modelos modificados¶
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 modelado (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
cluster.MeanShift(bug fix)decomposition.IncrementalPCAen Python 2 (bug fix)decomposition.SparsePCA(bug fix)ensemble.GradientBoostingClassifier(corrección de errores que afecta las características de importancias)isotonic.IsotonicRegression(bug fix)linear_model.ARDRegression(bug fix)linear_model.LogisticRegressionCV(bug fix)linear_model.OrthogonalMatchingPursuit(bug fix)linear_model.PassiveAggressiveClassifier(bug fix)linear_model.PassiveAggressiveRegressor(bug fix)linear_model.Perceptron(bug fix)linear_model.SGDClassifier(bug fix)linear_model.SGDRegressor(bug fix)metrics.roc_auc_score(bug fix)metrics.roc_curve(bug fix)neural_network.BaseMultilayerPerceptron(bug fix)neural_network.MLPClassifier(bug fix)neural_network.MLPRegressor(bug fix)Las notas de lanzamiento v0.19.0 no pudieron mencionar una incompatibilidad hacia atrás con
model_selection.StratifiedKFoldcuandoshuffle=Truedebido a #7823.
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.)
Mayores Errores Conocidos¶
#11924:
linear_model.LogisticRegressionCVconsolver='lbfgs'ymulti_class='multinomial'puede ser no determinista o roto en macOS. Este parece ser el caso en los servidores Travis CI, pero no ha sido confirmado en MacBook personal! Este número ha estado presente en versiones anteriores.#9354:
metrics.pairwise.euclidean_distances(que se usa varias veces a lo largo de la biblioteca) da resultados con poca precisión, lo que afecta particularmente a su uso con entradas flotantes de 32-bits. Esto se volvió más problemático en las versiones 0.18 y 0.19 cuando algunos algoritmos fueron cambiados para evitar lanzar datos de 32 bits en 64-bit.
Registro de cambios¶
Se ha eliminado oficialmente el soporte para Python 3.3.
sklearn.cluster¶
Major Feature
cluster.AgglomerativeClusteringahora soporta un clúster de Enlace único a través delinkage='single'. #9372 por Leland McInnes y Steve Astels.Feature
cluster.KMeansycluster.MiniBatchKMeansahora soportan pesos de muestra mediante el nuevo parámetrosample_weighten la funciónfit`. #10933 de Johannes Hansen.Efficiency
cluster.KMeans,cluster.MiniBatchKMeansycluster.k_meanspasaron conalgorithm='full'ahora fuerza el pedido mayor de filas, mejorando el tiempo de ejecución. #10471 por Gaurav Dhingra.Efficiency
cluster.DBSCANahora está paralelizado de acuerdo an_jobsindependientemente delalgoritmo. #8003 por Joël Billaud.Enhancement
cluster.KMeansahora da una advertencia si el número de clústeres distintos encontrados es menor quen_clusters. Esto puede ocurrir cuando el número de puntos distintos en el conjunto de datos es realmente menor que el número de cluster que está buscando. #10059 por Christian Braune.Fix Se ha corregido un error por el que el método
fitdecluster.AffinityPropagationalmacenaba los centros de los clusters como una matriz 3d en lugar de 2d en caso de no convergencia. Para la misma clase, se ha corregido un comportamiento indefinido y arbitrario en caso de datos de entrenamiento en los que todas las muestras tenían la misma similitud. #9612. Por Jonatan Samoocha.Fix Se corrigió un error en
cluster.spectral_clusteringdonde la normalización del espectro estaba utilizando una división en lugar de una multiplicación. #8129 por Jan Margeta, Guillaume Lemaitre, y Devansh D..Fix Se corrigió un error en
cluster.k_means_elkandonde laiteracióndevuelta era 1 menor que el valor correcto. También agregó el atributon_iter_faltante en la cadena docstring decluster.KMeans. #11353 de Jeremie du Boisberranger.Fix Se corrigió un error en
cluster.mean_shiftdonde las etiquetas asignadas no eran deterministas si había varios clusters con las mismas intensidades. #11901 por Adrin Jalali.API Change Queda obsoleto
pooling_funcparámetro no utilizado encluster.AgglomerativeClustering. #9875 por Kumar Ashutosh.
sklearn.compose¶
Nuevo módulo.
Major Feature Se añadió
compose.ColumnTransformer, que permite aplicar diferentes transformadores a diferentes columnas de arrays o pandas DataFrames. #9012 por Andreas Müller y Joris Van den Bossche, y #11315 por Thomas Fan.Major Feature Se ha añadido el
compose.TransformedTargetRegressorque transforma el objetivo y antes de encajar un modelo de regresión. Las predicciones se mapean al espacio original a través de una transforma inversa. #9041 por Andreas Müller y Guillaume Lemaitre.
sklearn.covariance¶
Efficiency Mejoras en el tiempo de ejecución en
covariance.GraphicalLasso. #9858 por Steven Brown.API Change El
covariance.graph_lasso,covariance.GraphLassoycovariance.GraphLassoCVhan sido renombrados acovariance.graphical_lasso,covariance.GraphicalLassoycovariance.GraphicalLassoCVrespectivamente y será eliminado en la versión 0.22. #9993 por Artiem Krinitsyn
sklearn.datasets¶
Major Feature Se añadió
datasets.fetch_openmlpara obtener conjuntos de datos de OpenML. OpenML es una plataforma libre y abierta para compartir datos y se utilizará en lugar de mldata ya que proporciona mejor disponibilidad de servicio. #9908 por Andreas Müller y Jan N. van Rijn.Feature En
datasets.make_blobs, ahora se puede pasar una lista al parámetron_samplespara indicar el número de muestras a generar por cada clúster. #8617 por Maskani Filali Mohamed y Konstantinos Katrioplas.Feature Se añadió el atributo
filenameadatasetsque tienen un archivo CSV. #9101 por alex-33 y Maskani Filali Mohamed.Feature Se ha añadido el parámetro
return_X_ya varios cargadores de conjuntos de datos. #10774 por Chris Catalfo.Fix Corregido un error en
datasets.load_bostonque tenía un punto de datos erróneo. #10795 por Takeshi Yoshizawa.Fix Se ha corregido un error en
datasets.load_irisque tenía dos puntos de datos erróneos. #11082 por Sadhana Srinivasan y Hanmin Qin.Fix Se ha corregido un error en
datasets.fetch_kddcup99, donde los datos no se barajaban correctamente. #9731 por Nicolas Goix.Fix Se ha corregido un error en
datasets.make_circles, por el que no se podía generar un número impar de puntos de datos. #10045 por Christian Braune.API Change Obsoleto
sklearn.datasets.fetch_mldataque se eliminará en la versión 0.22. mldata.org ya no está operativo. Hasta su eliminación seguirá siendo posible cargar conjuntos de datos en caché. #11466 por Joel Nothman.
sklearn.decomposition¶
Feature
decomposition.dict_learningfunciones y modelos ahora soportan restricciones de positividad. Esto se aplica al diccionario y al código disperso. #6374 por John Kirkham.Feature Fix
decomposition.SparsePCAahora exponenormalize_components. Cuando se establece como True, los datos de tren y de prueba se centran con la media del tren respectivamente durante la fase de ajuste y la fase de transformación. Esto corrige el comportamiento de SparsePCA. Cuando se establece en False, que es el valor por defecto, el comportamiento anormal anterior todavía se mantiene. El valor False es por compatibilidad con versiones anteriores y no debe utilizarse. #11585 por Ivan Panico.Efficiency Mejoras de eficiencia en
decomposition.dict_learning. #11420 y otros por John Kirkham.Fix Corregir para error no informativo en
descomposición.IncrementalPCA: ahora se produce un error si el número de componentes es mayor que el tamaño del lote elegido. El cason_components=Nonefue adaptado en consecuencia. #6452. Por Wally Gauze.Fix Se corrigió un error donde el método
partial_fitdedescomposición.IncrementalPCAusó división entera en lugar de división float en Python 2. #9492 por James Bourbeau.Fix En
decomposition.PCAseleccionando un parámetro n_components mayor que el número de muestras ahora provoca un error. Del mismo modo, el cason_components=Noneahora selecciona el mínimo den_samplesyn_features. #8484 por Wally Gauze.Fix Se corrigió un error en
decomposition.PCAdonde los usuarios obtendrán un error inesperado con conjuntos de datos grandes cuandon_components='mle'en versiones de Python 3. #9886 por Hanmin Qin.Fix Se corrigió un bajo flujo en el cálculo de KL-divergence para
decomposition.NMF#10142 por Tom Dupre la Tour.Fix Se corrigió un error en
decomposition.SparseCoderal ejecutar la codificación OMP en paralelo usando estructuras de datos asignadas de solo lectura. #5956 por Vighnesh Birodkar y Olivier Grisel.
sklearn.discriminant_analysis¶
Efficiency Mejora de uso de memoria para
_class_meansy_class_covendiscriminant_analysis. #10898 por Nanxin Chen.
sklearn.dummy¶
Feature
dummy.DummyRegressorahora tiene una opciónreturn_stden su métodopredict. Las desviaciones estándar devueltas serán ceros.Feature
dummy.DummyClassifierydummy.DummyRegressorahora solo requiere que X sea un objeto con longitud o forma finita. #9832 por Vrishank Bhardwaj.Feature
dummy.DummyClassifierydummy.DummyRegressorahora pueden ser anotados sin proporcionar muestras de prueba. #11951 de Rüdiger Busche.
sklearn.ensemble¶
Feature
ensemble.BaggingRegressoryensemble.BaggingClassifierahora puede encajar con valores faltantes/no finitos en X y/o multi-salida Y para soportar tuberías de envoltura que realizan su propia imputación. #9707 por Jimmy Wan.Feature
ensemble.GradientBoostingClassifieryensemble.GradientBoostingRegressorahora soportan detenerse temprano a través den_iter_no_change,validation_fractionytol. #7071 por Raghav RVFeature Se añadió el parámetro
named_estimators_enensemble.VotingClassifierpara acceder a estimadores equipados. #9157 por Herilalaina Rakotoarison.Fix Se corrigió un error al ajustar
ensemble.GradientBoostingClassifieroensemble.GradientBoostingRegressorconwarm_start=Trueque previamente aumentó un fallo de segmentación debido a una no conversión de la matriz CSC en formato CSR esperada pordecisión_función. Del mismo modo, los arreglos ordenados por Fortrans se convierten en arreglos ordenados por C en un caso dado. #9991 por Guillaume Lemaitre.Fix Se corrigió un error en
ensemble.GradientBoostingRegressoryensemble.GradientBoostingClassifierpara tener importancia de características resumidas y luego normalizadas, en lugar de normalizar sobre una base por árbol. El comportamiento anterior sobreponderó la importancia de Gini de las características que aparecen en etapas posteriores. Este problema solo afectó a las importaciones de características. #11176 por Gil Forsyth.API Change El valor predeterminado del parámetro
n_estimatorsdeensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor, yensemble.RandomTreesEmbeddingcambiarán de 10 en la versión 0.20 a 100 en 0.22. Se eleva un FutureWarning cuando se utiliza el valor predeterminado. #11542 por Anna Ayzenshtat.API Change Clases derivadas de
ensemble.BaseBagging. El atributoestimators_samples_devolverá una lista de arreglos con los índices seleccionados para cada bootstrap en lugar de una lista de arreglos con la máscara de las muestras seleccionadas para cada bootstrap. Los índices permiten repetir las muestras mientras que la máscara no permite esta funcionalidad. #9524 by Guillaume Lemaitre.Fix
ensemble.BaseBaggingdonde no se podía reproducir de forma determinista el resultado defitutilizando los atributos del objeto cuando se establecerandom_state. #9723 por Guillaume Lemaitre.
sklearn.feature_extraction¶
Feature Habilitar la llamada a get_feature_names en
feature_extraction.text.CountVectorizerno adaptada e inicializada con un vocabulario. #10908 por Mohamed Maskani.Enhancement
idf_ahora se puede establecer en unfeature_extraction.text.TfidfTransformer. #10899 por Sergey Melderis.Fix Se ha corregido un error en
feature_extraction.image.extract_patches_2dque lanzaba una excepción simax_patchesera mayor o igual que el número de todos los fragmentos posibles en lugar de devolver simplemente el número de fragmentos posibles. #10101 por Varun AgrawalFix Se ha corregido un error en
feature_extraction.text.CountVectorizer,feature_extraction.text.TfidfVectorizer,feature_extraction.text. HashingVectorizerpara soportar la indexación de matrices dispersas de 64 bits necesaria para procesar grandes conjuntos de datos con más de 2-10⁹ tokens (palabras o n-gramas). #9147 por Claes-Fredrik Mannby y Roman Yurchak.Fix Se ha corregido un error en
feature_extraction.text.TfidfVectorizerque ignoraba el parámetrodtype. Además,feature_extraction.text.TfidfTransformerpreservarádtypepara flotantes y lanzará una advertencia sidtypesolicitado es entero. #10441 por Mayur Kulkarni y Guillaume Lemaitre.
sklearn.feature_selection¶
Feature Añadida la funcionalidad de seleccionar K mejores características a
feature_selection.SelectFromModel. #6689 por Nihar Sheth y Quazi Rahman.Feature Añadido el parámetro
min_features_to_selectafeature_selection.RFECVpara limitar el número de características evaluadas. #11293 por Brent Yi.Feature
feature_selection.RFECV’s fit method now supports groups. #9656 by Adam Greenhall.Fix Se ha corregido el cálculo de
n_features_to_computepara casos de borde con puntuaciones de CV empatadas enfeature_selection.RFECV. #9222 por Nick Hoh.
sklearn.gaussian_process¶
Efficiency En
gaussian_process.GaussianProcessRegressor, el métodopredictes más rápido cuando se utilizareturn_std=Trueen particular cuando se llama varias veces seguidas. #9234 por andrewww y Minghui Liu.
sklearn.impute¶
Nuevo módulo, adoptando
preprocessing.Imputercomoimpute.SimpleImputercon cambios menores (ver bajo preprocesamiento abajo).Major Feature Añadido
impute.MissingIndicatorque genera un indicador binario para valores faltantes. #8075 por Maniteja Nandana y Guillaume Lemaitre.Feature El
impute.SimpleImputertiene una nueva estrategia,'constant', para completar los valores faltantes con uno fijo, dado por el parámetrofill_value. Esta estrategia soporta datos numéricos y no numéricos, al igual que la estrategia'most_frequent'ahora. #11211 por Jeremie du Boisberranger.
sklearn.isotonic¶
Fix Se ha corregido un error en
isotonic.IsotonicRegressionque combinaba incorrectamente las ponderaciones cuando se ajustaba un modelo a datos que incluían puntos con valores X idénticos. #9484 por Dallas Card
sklearn.linear_model¶
Feature
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorylinear_model.Perceptronahora expone los parámetrosearly_stopping,validation_fractionyn_iter_no_change, para detener el monitoreo de optimización de la puntuación en un conjunto de validación. Una nueva estrategia de aprendizaje"adaptativa"divide la tasa de aprendizaje entre 5 cada vez que los epoches consecutivosn_iter_no_changefallan al mejorar el modelo. #9043 por Tom Dupre la Tour.Feature Añade el parámetro
sample_weightal método de ajuste delinear_model.BayesianRidgepara la regresión lineal ponderada. #10112 por Peter St. Juan.Fix Se ha corregido un error en
logistic.logistic_regression_pathpara asegurarse de que los coeficientes devueltos son correctos cuandomulticlass='multinomial'. Anteriormente, algunos de los coeficientes se anularían entre sí, lo que provocaría resultados incorrectos enlinear_model.LogisticRegressionCV. #11724 por Nicolas Hug.Fix Se corrigió un error en
linear_model.LogisticRegressiondonde al usar el parámetromulti_class='multinomial', el métodopredict_probaestaba devolviendo probabilidades incorrectas en el caso de resultados binarios. #9939 por Roger Westover.Fix Se corrigió un error en
linear_model.LogisticRegressionCVdonde el métodoscoresiempre calcula la precisión, no la métrica dada por el parámetroscoring. #10998 por Thomas Fan.Fix Se corrigió un error en
linear_model.LogisticRegressionCVdonde la estrategia “ovr” siempre se utilizó para calcular las puntuaciones de validación cruzada en la configuración de múltiples clases, incluso si se estableció'multinomial'. #8720 por William de Vazelhes.Fix Se corrigió un error en
linear_model.OrthogonalMatchingPursuitque se rompió al configurarnormalize=False. #10071 por Alexandre Gramfort.Fix Se corrigió un error en
linear_model.ARDRegressionque causó estimaciones incorrectamente actualizadas para la desviación estándar y los coeficientes. #10153 por Jörg Döpfert.Fix Se corrigió un error en
linear_model.ARDRegressionylinear_model.BayesianRidgeque causó predicciones de NaN al encajar con un objetivo constante. #10095 por Jörg Döpfert.Fix Se corrigió un error en
linear_model.RidgeClassifierCVdonde el parámetrostore_cv_valuesno fue implementado aunque fue documentado encv_valuescomo una manera de configurar el almacenamiento de valores de validación cruzada para diferentes alfas. #10297 por Mabel Villalba-Jiménez.Fix Se corrigió un error en
linear_model.ElasticNetque causaba que la entrada fuera anulada cuando se usaba el parámetrocopy_X=Trueycheck_input=False. #10581 por Yacine Mazari.Fix Se corrigió un error en
sklearn.linear_model.Lassodonde el coeficiente tenía una forma incorrecta cuandofit_intercept=False. #10687 por Martin Hahn.Fix Se corrigió un error en
sklearn.linear_model.LogisticRegressiondonde elmulti_class='multinomial'con salida binariacon warm_start=True#10836 por Aishwarya Srinivasan.Fix Se corrigió un error en
linear_model.RidgeCVdonde el uso de enteroalphasplanteó un error. #10397 por Mabel Villalba-Jiménez.Fix Se corrigió la condición que desencadena el cálculo de huecos (gap) en
linear_model.Lassoylinear_model.ElasticNetcuando se trabaja con matrices dispersas. #10992 por Alexandre Gramfort.Fix Se corrigió un error en
linear_model.SGDClassifier,linear_model.SGDRegressor,linear_model.PassiveAggressiveClassifier,linear_model.PassiveAggressiveRegressorylinear_model.Perceptron, donde el criterio de parada estaba deteniendo el algoritmo antes de la convergencia. Un parámetron_iter_no_changefue añadido y establecido por defecto a 5. El comportamiento anterior es equivalente a ajustar el parámetro a 1. #9043 por Tom Dupre la Tour.Fix Se ha corregido un error por el que los estimadores en liblinear y libsvm-based fallaban si se les pasaba una matriz scipy.sparse con índices de 64 bits. Ahora lanzan un ValueError. #11327 por Karan Dhingra y Joel Nothman.
API Change Los valores por defecto de los parámetros
solverymulti_classdelinear_model.LogisticRegressioncambiará respectivamente de'liblinear'y'ovr'en la versión 0. 0 a'lbfgs'y'auto'en la versión 0.22. Se eleva un FutureWarning cuando se utilizan los valores por defecto. #11905 por Tom Dupre la Tour y Joel Nothman.API Change Desaprobar la opción
positive=Trueenlinear_model.Larsya que la implementación subyacente está rota. Utilizalinear_model.Lassoen su lugar. #9837 por Alexandre Gramfort.API Change
n_iter_puede variar de las versiones anteriores enlinear_model.LogisticRegressionconsolver='lbfgs'ylinear_model.HuberRegressor. Para Scipy <= 1.0. , el optimizador puede realizar más del número máximo de iteraciones solicitadas. Ahora ambos estimadores reportarán como mucho iteracionesmax_iterincluso si se realizaron más. #10723 por Joel Nothman.
sklearn.manifold¶
Efficiency Mejoras de velocidad tanto para los métodos “exact” como “barnes_hut” en
manifold.TSNE. #10593 y #10610 por Tom Dupre la Tour.Feature Sparse input en
manifold.Isomap.fit. #8554 por Leland McInnes.Feature
manifold.t_sne.trustworthinessacepta métricas distintas de Euclidean. #9775 por William de Vazelhes.Fix Se corrigió un error en
manifold.spectral_embeddingdonde la normalización del espectro estaba utilizando una división en lugar de una multiplicación. #8129 por Jan Margeta, Guillaume Lemaitre, y Devansh D..API Change Feature Desaprobar el parámetro
precomputeden la funciónmanifold.t_sne.trustworthiness. En su lugar, el nuevo parámetrometricdebe utilizarse con cualquier métrica compatible incluyendo “precomputed”, en cuyo caso la matriz de entradaXdebería ser una matriz de distancias paralelas o distancias cuadradas. #9775 por William de Vazelhes.API Change Desaprobar el parámetro
precomputeden la funciónmanifold.t_sne.trustworthiness. En su lugar, el nuevo parámetrometricdebe utilizarse con cualquier métrica compatible incluyendo “precomputed”, en cuyo caso la matriz de entradaXdebería ser una matriz de distancias paralelas o distancias cuadradas. #9775 por William de Vazelhes.
sklearn.metrics¶
Major Feature Se añadió la métrica
metrics.davies_bouldin_scorepara la evaluación de los modelos de clúster sin una verdad terrenal. #10827 por Luis Osa.Major Feature Se añadió la métrica
metrics.balanced_accuracy_scorey una puntuación'balanced_accuracy'correspondiente para la clasificación binaria y multiclase. #8066 por @xyguo y Aman Dalmia, y #10587 por Joel Nothman.Feature La AUC parcial está disponible a través del parámetro
max_fprenmetrics.roc_auc_score. #3840 por Alexander Niederbühl.Feature Una puntuación basada en
metrics.brier_score_losstambién está disponible. #9521 por Hanmin Qin.Feature Se ha añadido un control sobre la normalización en
metrics.normalized_mutual_info_scoreymetrics.adjusted_mutual_info_scoremediante el parámetroaverage_method. En la versión 0.22, el normalizador por defecto para cada uno se convertirá en la media aritmética de las entradas de cada clustering. #11124 por Arya McCarthy.Feature Se ha añadido el parámetro
output_dictenmetrics.classification_reportpara devolver las estadísticas de clasificación como diccionario. #11160 por Dan Barkhorn.Feature
métricas.classification_reportahora reporta todos los promedios aplicables sobre los datos dados, incluyendo el promedio micro, macro y ponderado, así como muestras promedio para los datos multietiqueta. #11679 por Alexander Pacha.Feature
metrics.average_precision_scoreahora soporta el binarioy_truedistinto de{0, 1}o{-1, 1}a través del parámetropos_label. #9980 por Hanmin Qin.Feature
metrics.label_ranking_average_precision_scoreahora soportasample_weight. #10845 por Jose Perez-Parras Toledano.Feature Añadir parámetro
dense_outputametrics.pairwise.linear_kernel. Cuando False y ambas entradas sean dispersas, devolverán una matriz dispersa. #10999 por Taylor G Smith.Efficiency
metrics.silhouette_scoreymetrics.silhouette_samplesson más eficientes en memoria y se ejecutan más rápido. Esto evita algunos bloqueos y MemoryErrors reportados. #11135 por Joel Nothman.Fix Se ha corregido un error en
metrics.precision_recall_fscore_supportcuandorange(n_labels)truncado es pasado como valor paralabels. #10377 por Gaurav Dhingra.Fix Se corrigió un error debido a un error de punto flotante en
metrics.roc_auc_scorecon pesos no enteros. #9786 por Hanmin Qin.Fix Se corrigió un error en el que
metrics.roc_curvea veces comienza en el eje Y en lugar de (0, 0), lo cual es inconsistente con el documento y otras implementaciones. Ten en cuenta que esto no influirá en el resultado demétricas.roc_auc_score#10093 por alexryndin y Hanmin Qin.Fix Se ha corregido un error para evitar el desbordamiento de enteros. Producto lanzado a 64 bits enteros en
metrics.mutual_info_score. #9772 por Kumar Ashutosh.Fix Se ha corregido un error donde
metrics.average_precision_scorea veces devuelvenancuandosample_weightcontiene 0. #9980 por Hanmin Qin.Fix Se corrigió un error en
metrics.fowlkes_mallows_scorepara evitar el desbordamiento de enteros. Se emitió valor de retorno decontingency_matrixaint64y producto computado de raíces cuadradas en lugar de raíz cuadrada del producto. #9515 por Alan Liddell y Manh Dao.API Change Desaprobar el parámetro
reorderenmetrics.aucya que ya no es requerido parametrics.roc_auc_score. Además, el uso dereorder=Truepuede ocultar errores debido a un error de punto flotante en la entrada. #9851 por Hanmin Qin.API Change En
metrics.normalized_mutual_info_scoreymetrics.adjusted_mutual_info_score, se advierte queaverage_methodtendrá un nuevo valor por defecto. En la versión 0.22, el normalizador por defecto para cada uno se convertirá en la media aritmética de las entropías de cada agrupación. Actualmente,metrics.normalized_mutual_info_scoreutiliza el valor por defecto demétodo_de_promedio='geométrico', ymetrics.adjusted_mutual_info_scoreutiliza el valor por defecto demétodo_de_promedio='máximo'para coincidir con sus comportamientos en la versión 0.19. #11124 por Arya McCarthy.API Change El parámetro
batch_sizeparametrics.pairwise_distances_argmin_minymetrics.pairwise_distances_argminestá obsoleto para ser eliminado en la v0.22. Ya no tiene ningún efecto, ya que el tamaño del lote está determinado por la configuración global deworking_memory. Ver Limitación de la memoria de trabajo. #10280 por Joel Nothman y Aman Dalmia.
sklearn.mixture¶
Feature Añadida la función fit_predict a
mixture.GaussianMixtureymixture.GaussianMixture, que es esencialmente equivalente a llamar a fit y predict. #10336 por Shu Haoran y Andrew Peng.Fix Se ha corregido un error en
mixture.BaseMixturepor el que al informen_iter_le faltaba una iteración. Afectaba amixture.GaussianMixtureymixture.BayesianGaussianMixture. #10740 por Erich Schubert y Guillaume Lemaitre.Fix Se ha corregido un error en
mixture.BaseMixturey sus subclasesmixture.GaussianMixtureymixture.BayesianGaussianMixturedonde ellower_bound_no era el límite inferior máximo de todas las inicializaciones (cuandon_init > 1), sino sólo el límite inferior de la última inicialización. #10869 por Aurélien Géron.
sklearn.model_selection¶
Feature Añadir el parámetro
return_estimatorenmodel_selection.cross_validatepara devolver los estimadores ajustados en cada división. #9686 por Aurélien Bellet.Feature El nuevo atributo
refit_time_se almacenará enmodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVsirefitse establece comoTrue. Esto permitirá medir el tiempo completo que se tarda en realizar la optimización de los hiperparámetros y el reajuste del mejor modelo en todo el conjunto de datos. #11310 by Matthias Feurer.Feature Exponer el parámetro
error_scoreenmodel_selection.cross_validate,model_selection.cross_val_score,model_selection.learning_curveymodel_selection.validation_curvepara controlar el comportamiento que se desencadena cuando se produce un error enmodel_selection._fit_and_score. #11576 by Samuel O. Ronsin.Feature
BaseSearchCVtiene ahora una interfaz experimental y privada para soportar estrategias de búsqueda de parámetros personalizados, a través de su método_run_search. Consulta las implementaciones enmodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVy, por favor, proporciona tu opinión si lo utilizas. Ten en cuenta que no aseguramos la estabilidad de esta API más allá de la versión 0.20. #9599 by Joel NothmanEnhancement Añadir un mensaje de error mejorado en
model_selection.cross_val_scorecuando se pasan múltiples métricas en la palabra clavescoring. #11006 por Ming Li.API Change El número por defecto de pliegues de validación cruzada
cvy el número por defecto de divisionesn_splitsen los divisores tipomodel_selection.KFoldcambiarán de 3 a 5 en 0.22 ya que 3 pliegues tienen mucha varianza. #11557 por Alexandre Boucaud.API Change El parámetro por defecto
iiddemodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVcambiará deTrueaFalseen la versión 0.22 para corresponder a la definición estándar de validación cruzada, y el parámetro se eliminará en la versión 0.24 por completo. Este parámetro tiene mayor importancia práctica cuando los tamaños de los diferentes conjuntos de pruebas en la validación cruzada son muy desiguales, es decir, en las estrategias de CV basadas en grupos. #9085 by Laurent Direr and Andreas Müller.API Change El valor por defecto del parámetro
error_scoreenmodel_selection.GridSearchCVymodel_selection.RandomizedSearchCVcambiará anp.NaNen la versión 0.22. #10677 por Kirill Zhdanovich.API Change Se ha cambiado la excepción ValueError lanzada en
model_selection.ParameterSamplera un UserWarning para el caso en que la clase se instancie con un valor den_itermayor que el espacio total de parámetros en la parrilla de parámetros.n_iteractúa ahora como límite superior de las iteraciones. #10982 by Juliet LawtonAPI Change La entrada no válida para
model_selection.ParameterGridahora genera TypeError. #10928 por Solutus Immensus
sklearn.multioutput¶
Major Feature Añadida
multioutput.RegressorChainpara la regresión multiobjetivo. #9257 por Kumar Ashutosh.
sklearn.naive_bayes¶
Major Feature Añadida
naive_bayes.ComplementNB, que implementa el clasificador Complement Naive Bayes descrito en Rennie et al. (2003). #8190 por Michael A. Alcorn.Feature Añadir el parámetro
var_smoothingennaive_bayes.GaussianNBpara dar un control preciso sobre el cálculo de las varianzas. #9681 por Dmitry Mottl.Fix Se ha corregido un error en
naive_bayes.GaussianNBque generaba un error incorrecto para la lista anterior que sumaba 1. #10005 por Gaurav Dhingra.Fix Se ha corregido un error en
naive_bayes.MultinomialNBque no aceptaba pseudocuentas con valor vectorial (alpha). #10346 por Tobias Madsen
sklearn.neighbors¶
Efficiency
neighbors.RadiusNeighborsRegressoryneighbors.RadiusNeighborsClassifierahora se paralelizan segúnn_jobsindependientemente delalgoritmo. #10887 por Joël Billaud.Efficiency
Nearest neighborslos métodos de consulta son ahora más eficientes en memoria cuandoalgorithm='brute'. #11136 por Joel Nothman y Aman Dalmia.Feature Añadir el parámetro
sample_weightal método de ajuste deneighbors.KernelDensitypara permitir la ponderación en la estimación de la densidad del núcleo. #4394 por Samuel O. Ronsin.Feature Detección de novedades con
neighbors.LocalOutlierFactor: Añadir un parámetronoveltyaneighbors.LocalOutlierFactor. Cuandonoveltyse establece como True,neighbors.LocalOutlierFactorpuede utilizarse para la detección de novedades, es decir, para predecir sobre nuevos datos no vistos. Los métodos de predicción disponibles sonpredict,decision_functionyscore_samples. Por defecto,noveltyestá establecido enFalse, y sólo está disponible el métodofit_predict. Por Albert Thomas.Fix Se ha corregido un error en
neighbors.NearestNeighborspor el que el ajuste de un modelo NearestNeighbors falla cuando a) la métrica de distancia utilizada es una llamada y b) la entrada al modelo NearestNeighbors es dispersa. #9579 por Thomas Kober.Fix Corregido un error para que
predictenneighbors.RadiusNeighborsRegressorpueda manejar conjuntos de vecinos vacíos cuando se usan pesos no uniformes. También se genera una nueva advertencia cuando no se encuentran vecinos para las muestras. #9655 por Andreas Bjerre-Nielsen.Fix Efficiency Se ha corregido un error en la construcción de
KDTreeque resulta en tiempos de construcción y consulta más rápidos. #11556 por Jake VanderPlasFix Se ha corregido un error en
neighbors.KDTreeyneighbors.BallTreepor el que los objetos de árbol decapados cambiaban su tipo a la superclaseBinaryTree. #11774 por Nicolas Hug.
sklearn.neural_network¶
Feature Añadir el parámetro
n_iter_no_changeenneural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, yneural_network.MLPClassifierpara dar control sobre el número máximo de épocas para no cumplir con la mejora detol. #9456 por Nicholas Nadeau.Fix Se ha corregido un error en
neural_network.BaseMultilayerPerceptron,neural_network.MLPRegressor, yneural_network.MLPClassifiercon el nuevo parámetron_iter_no_changeahora en 10 desde el 2 previamente codificado. #9456 por Nicholas Nadeau.Fix Se ha corregido un error en
neural_network.MLPRegressorpor el que el ajuste abandonaba inesperadamente antes de tiempo debido a mínimos locales o fluctuaciones. #9456 por Nicholas Nadeau
sklearn.pipeline¶
Feature El método
predictdepipeline.Pipelineahora pasa los argumentos de las palabras clave al último estimador del pipeline, permitiendo el uso de parámetros comoreturn_stden un pipeline con precaución. #9304 por Breno Freitas.API Change
pipeline.FeatureUnionahora soporta'drop'como transformador para soltar características. #11144 por Thomas Fan.
sklearn.preprocessing¶
Major Feature Ampliado
preprocessing.OneHotEncoderpara permitir la codificación de características categóricas de cadena como una matriz numérica utilizando un esquema de codificación de una sola vez (o ficticia), y añadidopreprocessing.OrdinalEncoderpara convertir a enteros ordinales. Estas dos clases ahora manejan la codificación de todos los tipos de características (también maneja características con valores de cadena) y deriva las categorías basadas en los valores únicos de las características en lugar del valor máximo de las mismas. #9151 y #10521 por Vighnesh Birodkar y Joris Van den Bossche.Major Feature Añadido
preprocessing.KBinsDiscretizerpara convertir las características continuas en características categóricas o codificadas en un punto. #7668, #9647, #10195, #10192, #11272, #11467 y #11505. por Henry Lin, Hanmin Qin, Tom Dupre la Tour y Giovanni Giuseppe Costa.Major Feature Añadido
preprocessing.PowerTransformer, que implementa las transformaciones de potencia de Yeo-Johnson y Box-Cox. Las transformaciones de potencia intentan encontrar un conjunto de transformaciones paramétricas en función de las características para asignar aproximadamente los datos a una distribución gaussiana centrada en cero y con varianza unitaria. Esto es útil como una transformación estabilizadora de la varianza en situaciones donde la normalidad y la homocedasticidad son deseables. #10210 por Eric Chang y Maniteja Nandana, y #11520 por Nicolas Hug.Major Feature Los valores NaN se ignoran y se tratan en los siguientes métodos de preprocesamiento:
preprocessing.MaxAbsScaler,preprocessing.MinMaxScaler,preprocessing.RobustScaler,preprocessing.StandardScaler,preprocessing.PowerTransformer,preprocessing.QuantileTransformerypreprocessing. maxabs_scale,preprocessing.minmax_scale,preprocessing.robust_scale,preprocessing.scale,preprocessing.power_transform,preprocessing. quantile_transformrespectivamente en los temas #11011, #11005, #11308, #11206, #11306, y #10437. Por Lucija Gregov y Guillaume Lemaitre.Feature
preprocessing.PolynomialFeaturesahora soporta entrada dispersa. #10452 por Aman Dalmia y Joel Nothman.Feature
preprocessing.RobustScalerypreprocessing.robust_scalepueden ajustarse usando matrices dispersas. #11308 por Guillaume Lemaitre.Feature
preprocessing.OneHotEncoderahora admite el método get_feature_names para obtener los nombres de características transformadas. #10181 por Nirvan Anjirbag y Joris Van den Bossche.Feature Se ha añadido un parámetro
check_inverseapreprocessing.FunctionTransformerpara asegurar quefuncyinverse_funcson la inversa de la otra. #9399 por Guillaume Lemaitre.|El método
transformdesklearn.preprocessing.MultiLabelBinarizerahora ignora cualquier clase desconocida. Se lanza una advertencia indicando las clases desconocidas encontradas que se ignoran. #10913 by Rodrigo Agundez.Fix Corregidos errores en
preprocessing.LabelEncoderque a veces lanzaba errores cuando se llamaba atransformoinverse_transformcon arrays vacíos. #10458 por Mayur Kulkarni.Fix Corregir ValueError en
preprocessing.LabelEncoderal usarinverse_transformen etiquetas no vistas. #9816 por Charlie Newey.Fix Corregir error en
preprocessing.OneHotEncoderque descartaba eldtypecuando devolvía una salida de matriz dispersa. #11042 por Daniel Morales.Fix Corregir
fitypartial_fitenpreprocssing.StandardScaleren el caso raro cuandowith_mean=Falseywith_std=Falseque se bloquearon al llamar aencajarmás de una vez y dar resultados inconsistentes paramean_si la entrada era una matriz esparse o una matriz densa.mean_se establecerá enNingunocon entradas dispersas y densas.n_samples_seen_también será reportado para ambos tipos de entrada. #11235 por Guillaume Lemaitre.API Change Obsoletos los parámetros
n_valuesycategorical_featuresy los atributosactive_features_,feature_indices_yn_values_depreprocessing.OneHotEncoder. El parámetron_valuespuede ser reemplazado por el nuevo parámetrocategories, y los atributos con el nuevo atributocategories_. Seleccionando las características categóricas con el parámetrocategorical_featuresahora es mejor soportado usandocompose.ColumnTransformer. #10521 por Joris Van den Bossche.API Change Obsoleto
preprocessing.Imputery mover el módulo correspondiente aimpute.SimpleImputer. #9726 por Kumar Ashutosh.API Change El parámetro
axisque estaba enpreprocessing.Imputerya no está presente enimpute.SimpleImputer. El comportamiento es equivalente aaxis=0(impute a lo largo de las columnas). La imputación en sentido contrario puede realizarse con FunctionTransformer (por ejemplo,FunctionTransformer(lambda X: SimpleImputer().fit_transform(X. ).T)). #10829 por Guillaume Lemaitre y Gilberto Olimpio.API Change El marcador NaN para los valores faltantes ha sido cambiado entre el
preprocessing.Imputery elimpute.SimpleImputer.missing_values='NaN'ahora debería sermissing_values=np.nan. #11211 por Jeremie du Boisberranger.API Change En
preprocessing.FunctionTransformer, el predeterminado devalidateserá deTrueaFalseen 0.22. #10655 por Guillaume Lemaitre.
sklearn.svm¶
Fix Se corrigió un error en
svm.SVCdonde cuando el argumentokerneles unicode en Python2, el métodopredict_probaestaba levantando un TypeError inesperado dado entradas densas. #10412 por Jiongyan Zhang.API Change Desaprobar el parámetro
random_stateensvm.OneClassSVMya que la implementación subyacente no es aleatoria. #9497 por Albert Thomas.API Change El valor predeterminado del parámetro
gammadesvm.SVC,NuSVC,SVR,NuSVR,OneClassSVMcambiará de'auto'a'scale'en la versión 0.22 para tener mejor cuenta las características sin escalar. #8361 por Gaurav Dhingra y Ting Neo.
sklearn.tree¶
Enhancement Aunque es privado (y por lo tanto no garantizado la estabilidad de la API),
tree._criterion.ClassificationCriterionytree. criterion.RegressionCriterionahora puede ser cimportado y extendido. #10325 por Camil Staps.Fix Se corrigió un error en
tree.BaseDecisionTreeconsplitter="best"donde el umbral de división podía volverse infinito cuando los valores en X estaban cerca de infinito. #10536 por Jonathan Ohayon.Fix Se corrigió un error en
tree.MAEpara asegurar que los pesos de muestra se estén utilizando durante el cálculo de impureza del árbol MAE. El comportamiento anterior podría provocar la elección de divisiones subóptimas, ya que el cálculo de impureza consideraba que todas las muestras eran de igual importancia. #11464 por John Stott.
sklearn.utils¶
Feature
utils.check_arrayyutils.check_X_yahora tienenaccept_large_sparsepara controlar si las matrices scipy.sparce deben rechazarse de análisis con índices de 64-bits. #11327 por Karan Dhingra y Joel Nothman.Efficiency Fix Evita copiar los datos en
utils.check_arraycuando los datos de entrada son un mapa de mem(ycopy=False). #10663 por Arthur Mensch y Loïc Estève.API Change
utils.check_arrayproduce unFutureWarningindicando que los arreglos de bytes/strings se interpretarán como números decimales que empiezan en la versión 0. 2. #10229 por Ryan Lee
Múltiples módulos¶
Feature API Change API de detección de valores atípicos más coherente: Agrega un método
score_samplesensvm.OneClassSVM,ensemble.IsolationForest,neighbors.LocalOutlierFactor,covariance.EllipticEnvelope. Permite acceder a las funciones de puntuación en bruto de los documentos originales. Un nuevo parámetrooffset_permite enlazar los métodosscore_samplesydecision_function. El parámetrocontaminationde los métodosensemble.IsolationForestyneighbors.LocalOutlierFactordecision_functionse utiliza para definir esteoffset_tal que los valores atípicos (respectivamente inliers) tengan valores negativos (respectivamente positivos) dedecision_function. Por defecto,contaminationse mantiene sin cambios a 0.1 durante un período de obsolescencia. En la versión 0. 2, se establecerá en «auto», por lo que se utilizarán compensaciones de puntuación específicas del método. En el métododecision_functiondecovariance.EllipticEnvelope, el parámetroraw_valuesqueda obsoleto, ya que en 0.22 se devolverá siempre la distancia de Mahalanobis desplazada. #9015 de Nicolas Goix.Feature API Change Un parámetro
behaviourha sido introducido enensemble.IsolationForestpara asegurar la compatibilidad con versiones anteriores. En el comportamiento antiguo, ladecisi_functiones independiente del parámetrocontamination. Así se utiliza un atributo de umbral dependiendo del parámetrocontamination. En el nuevo comportamiento, ladecisi_functiondepende del parámetrocontamination, de tal manera que 0 se convierte en su umbral natural para detectar los vientres. Establecer comportamiento a «viejo» es obsoleto y no será posible en la versión 0.22. Al margen, el parámetro de comportamiento será eliminado en 0.24. #11553 por Nicolas Goix.API Change Se añadió una advertencia de convergencia a
svm.LinearSVCylinear_model.LogisticRegressioncuandoverboseestá establecido en 0. #10881 por Alexandre Sevin.API Change Se ha cambiado el tipo de advertencia de
UserWarningaexceptions.ConvergenceWarningpor convergencia fallida enlinear_model.logistic_regression_path,linear_model.RANSACRegressor,linear_model.ridge_regression,gaussian_process.GaussianProcessRegressor,gaussian_process.GaussianProcessClassifier,decomposition.fastica,cross_decomposition.PLSCanonical,cluster.AffinityPropagation, ycluster.Birch. #10306 por Jonathan Siebert.
Varios¶
Major Feature Un nuevo parámetro de configuración,
working_memoryfue añadido para controlar los límites de consumo de memoria en operaciones por bloques (chunked), como la nuevametrics.pairwise_distances_chunked. Ver Limitación de la memoria de trabajo. #10280 por Joel Nothman y Aman Dalmia.Feature La versión de
joblibempaquetada con Scikit-learn ahora es 0.12. Esto usa una nueva implementación multiprocesamiento predeterminada, llamada loky. Aunque esto puede incurrir en algo de memoria y comunicación, debería proporcionar una mayor estabilidad entre plataformas que depender del multiprocesamiento estándar de librerías Python. #11741 por los desarrolladores de Joblib, especialmente Thomas Moreau y Olivier Grisel.Feature Se ha añadido una variable de entorno para usar el joblib del sitio en lugar de la vendida (Variables de entorno). La API principal de joblib está ahora expuesta en
sklearn.utils. #11166 por Gael Varoquaux.Feature Añade soporte de PyPy 3 casi completo. Las funcionalidades no soportadas son
datasets.load_svmlight_file,feature_extraction.FeatureHasheryfeature_extraction.text.HashingVectorizer. Para ejecutarse en PyPy, PyPy3-v5.10+, Numpy 1.14.0+, y scipy 1.1. + son requeridos. #11010 por Ronan Lamy y Roman Yurchak.Feature Un método de utilidad
sklearn.show_versionsfue añadido para imprimir información relevante para la depuración. Incluye el sistema de usuarios, el ejecutable Python, la versión de las bibliotecas principales y la información de enlace BLAS . #11596 por Alexandre BoucaudFix Se corrigió un error al configurar parámetros en el metaestimador, involucrando tanto un estimador envuelto como su parámetro. #9999 por Marcus Voss y Joel Nothman.
Fix Se corrigió un error en el que se llamaba a
sklearn.base.cloneno estaba seguro en el hilo y podría resultar en un error de «pop de lista vacía». #9569 por Andreas Müller.API Change El valor predeterminado de
n_jobsse cambia de1aNoneen todas las funciones y clases relacionadas.n_jobs=Nonesignificaunset. Generalmente será interpretado comon_jobs=1, a menos que eljoblib.Parallelen el contexto del backend especifica lo contrario (Ver Glossary para obtener información adicional). Ten en cuenta que este cambio sucede inmediatamente (es decir, sin un ciclo de obsolescencia). #11741 por Olivier Grisel.Fix Se corrigió un error en los ayudantes de validación donde pasar un DataFrame de Dask resulta en un error. #12462 por Zachariah Miller
Cambios en las comprobaciones de los estimadores¶
Estos cambios afectan principalmente a los desarrolladores de bibliotecas.
Comprobaciones de transformadores ahora se aplican si el estimador implementa transform, independientemente de si hereda de
sklearn.base.TransformerMixin. #10474 por Joel Nothman.Ahora se comprueba la consistencia entre decision_function y predicciones categóricas. #10500 por Narine Kokhlikyan.
Permitir que las pruebas en
utils.estimator_checks.check_estimatorprueben funciones que acepten datos combinados. #9701 por Kyle JohnsonPermitir a
utils.estimator_checks.check_estimatorverificar que no hay ninguna configuración privada aparte de parámetros durante la inicialización del estimador. #9378 por Herilalaina RakotoarisonEl conjunto de comprobaciones en
utils.estimator_checks.check_estimatorahora incluye una prueba decheck_set_paramsque comprueba queset_paramses equivalente a pasar parámetros en__init__y advierte si encuentra validación de parámetros. #7738 por Alvin ChiangAñade pruebas de invariancia para las métricas de racimo. #8102 por Ankita Sinha y Guillaume Lemaitre.
Añade
check_methods_subset_invarianceacheck_estimator, que comprueba que los métodos de estimación son invariantes si se aplican a un subconjunto de datos. #10428 por Jonathan OhayonAñade pruebas en
utils.estimator_checks.check_estimatorpara comprobar que un estimador puede manejar datos de entrada de memmap de solo lectura. #10663 por Arthur Mensch y Loïc Estève.check_sample_weights_pandas_seriesahora usa 8 en lugar de 6 muestras para acomodar el número predeterminado de clústeres encluster.KMeans. #10933 por Johannes Hansen.Los estimadores ahora se comprueban si
sample_weight=Noneequivale asample_weight=np.ones(...). #11558 por Sergul Aydore.
Colaboradores de código y documentación¶
Gracias a quienes han contribuido al mantenimiento y mejora del proyecto desde la versión 0.19, incluyendo:
211217613, Aarshay Jain, absolutelyNoWarranty, Adam Greenhall, Adam Kleczewski, Adam Richie-Halford, adelr, AdityaDaflapurkar, Adrin Jalali, Aidan Fitzgerald, aishgrt1, Akash Shivram, Alan Liddell, Alan Yee, Albert Thomas, Alexander Lenail, Alexander-N, Alexandre Boucaud, Alexandre Gramfort, Alexandre Sevin, Alex Egg, Alvaro Perez-Diaz, Amanda, Aman Dalmia, Andreas Bjerre-Nielsen, Andreas Mueller, Andrew Peng, Angus Williams, Aniruddha Dave, annaayzenshtat, Anthony Gitter, Antonio Quinonez, Anubhav Marwaha, Arik Pamnani, Arthur Ozga, Artiem K, Arunava, Arya McCarthy, Attractadore, Aurélien Bellet, Aurélien Geron, Ayush Gupta, Balakumaran Manoharan, Bangda Sun, Barry Hart, Bastian Venthur, Ben Lawson, Benn Roth, Breno Freitas, Brent Yi, brett koonce, Caio Oliveira, Camil Staps, cclauss, Chady Kamar, Charlie Brummitt, Charlie Newey, chris, Chris, Chris Catalfo, Chris Foster, Chris Holdgraf, Christian Braune, Christian Hirsch, Christian Hogan, Christopher Jenness, Clement Joudet, cnx, cwitte, Dallas Card, Dan Barkhorn, Daniel, Daniel Ferreira, Daniel Gomez, Daniel Klevebring, Danielle Shwed, Daniel Mohns, Danil Baibak, Darius Morawiec, David Beach, David Burns, David Kirkby, David Nicholson, David Pickup, Derek, Didi Bar-Zev, diegodlh, Dillon Gardner, Dillon Niederhut, dilutedsauce, dlovell, Dmitry Mottl, Dmitry Petrov, Dor Cohen, Douglas Duhaime, Ekaterina Tuzova, Eric Chang, Eric Dean Sanchez, Erich Schubert, Eunji, Fang-Chieh Chou, FarahSaeed, felix, Félix Raimundo, fenx, filipj8, FrankHui, Franz Wompner, Freija Descamps, frsi, Gabriele Calvo, Gael Varoquaux, Gaurav Dhingra, Georgi Peev, Gil Forsyth, Giovanni Giuseppe Costa, gkevinyen5418, goncalo-rodrigues, Gryllos Prokopis, Guillaume Lemaitre, Guillaume «Vermeille» Sanchez, Gustavo De Mari Pereira, hakaa1, Hanmin Qin, Henry Lin, Hong, Honghe, Hossein Pourbozorg, Hristo, Hunan Rostomyan, iampat, Ivan PANICO, Jaewon Chung, Jake VanderPlas, jakirkham, James Bourbeau, James Malcolm, Jamie Cox, Jan Koch, Jan Margeta, Jan Schlüter, janvanrijn, Jason Wolosonovich, JC Liu, Jeb Bearer, jeremiedbb, Jimmy Wan, Jinkun Wang, Jiongyan Zhang, jjabl, jkleint, Joan Massich, Joël Billaud, Joel Nothman, Johannes Hansen, JohnStott, Jonatan Samoocha, Jonathan Ohayon, Jörg Döpfert, Joris Van den Bossche, Jose Perez-Parras Toledano, josephsalmon, jotasi, jschendel, Julian Kuhlmann, Julien Chaumond, julietcl, Justin Shenk, Karl F, Kasper Primdal Lauritzen, Katrin Leinweber, Kirill, ksemb, Kuai Yu, Kumar Ashutosh, Kyeongpil Kang, Kye Taylor, kyledrogo, Leland McInnes, Léo DS, Liam Geron, Liutong Zhou, Lizao Li, lkjcalc, Loic Esteve, louib, Luciano Viola, Lucija Gregov, Luis Osa, Luis Pedro Coelho, Luke M Craig, Luke Persola, Mabel, Mabel Villalba, Maniteja Nandana, MarkIwanchyshyn, Mark Roth, Markus Müller, MarsGuy, Martin Gubri, martin-hahn, martin-kokos, mathurinm, Matthias Feurer, Max Copeland, Mayur Kulkarni, Meghann Agarwal, Melanie Goetz, Michael A. Alcorn, Minghui Liu, Ming Li, Minh Le, Mohamed Ali Jamaoui, Mohamed Maskani, Mohammad Shahebaz, Muayyad Alsadi, Nabarun Pal, Nagarjuna Kumar, Naoya Kanai, Narendran Santhanam, NarineK, Nathaniel Saul, Nathan Suh, Nicholas Nadeau, P.Eng., AVS, Nick Hoh, Nicolas Goix, Nicolas Hug, Nicolau Werneck, nielsenmarkus11, Nihar Sheth, Nikita Titov, Nilesh Kevlani, Nirvan Anjirbag, notmatthancock, nzw, Oleksandr Pavlyk, oliblum90, Oliver Rausch, Olivier Grisel, Oren Milman, Osaid Rehman Nasir, pasbi, Patrick Fernandes, Patrick Olden, Paul Paczuski, Pedro Morales, Peter, Peter St. John, pierreablin, pietruh, Pinaki Nath Chowdhury, Piotr Szymański, Pradeep Reddy Raamana, Pravar D Mahajan, pravarmahajan, QingYing Chen, Raghav RV, Rajendra arora, RAKOTOARISON Herilalaina, Rameshwar Bhaskaran, RankyLau, Rasul Kerimov, Reiichiro Nakano, Rob, Roman Kosobrodov, Roman Yurchak, Ronan Lamy, rragundez, Rüdiger Busche, Ryan, Sachin Kelkar, Sagnik Bhattacharya, Sailesh Choyal, Sam Radhakrishnan, Sam Steingold, Samuel Bell, Samuel O. Ronsin, Saqib Nizam Shamsi, SATISH J, Saurabh Gupta, Scott Gigante, Sebastian Flennerhag, Sebastian Raschka, Sebastien Dubois, Sébastien Lerique, Sebastin Santy, Sergey Feldman, Sergey Melderis, Sergul Aydore, Shahebaz, Shalil Awaley, Shangwu Yao, Sharad Vijalapuram, Sharan Yalburgi, shenhanc78, Shivam Rastogi, Shu Haoran, siftikha, Sinclert Pérez, SolutusImmensus, Somya Anand, srajan paliwal, Sriharsha Hatwar, Sri Krishna, Stefan van der Walt, Stephen McDowell, Steven Brown, syonekura, Taehoon Lee, Takanori Hayashi, tarcusx, Taylor G Smith, theriley106, Thomas, Thomas Fan, Thomas Heavey, Tobias Madsen, tobycheese, Tom Augspurger, Tom Dupré la Tour, Tommy, Trevor Stephens, Trishnendu Ghorai, Tulio Casagrande, twosigmajab, Umar Farouk Umar, Urvang Patel, Utkarsh Upadhyay, Vadim Markovtsev, Varun Agrawal, Vathsala Achar, Vilhelm von Ehrenheim, Vinayak Mehta, Vinit, Vinod Kumar L, Viraj Mavani, Viraj Navkal, Vivek Kumar, Vlad Niculae, vqean3, Vrishank Bhardwaj, vufg, wallygauze, Warut Vijitbenjaronk, wdevazelhes, Wenhao Zhang, Wes Barnett, Will, William de Vazelhes, Will Rosenfeld, Xin Xiong, Yiming (Paul) Li, ymazari, Yufeng, Zach Griffith, Zé Vinícius, Zhenqing Hu, Zhiqing Xiao, Zijie (ZJ) Poh