Versión 0.22.2.post1¶
Marzo 3 2020
La versión 0.22.2.post1 incluye una corrección de embalaje para la distribución de origen, pero el contenido de los paquetes es por lo demás idéntico al de las ruedas con la versión 0.22.2 (sin el sufijo .post1). Ambos contienen los siguientes cambios.
Registro de cambios¶
sklearn.impute
¶
Efficiency Reducir el uso de memoria asintótica de
impute.KNNImputer
mediante el corte del cálculo de la distancia por pares. #16397 por Joel Nothman.
sklearn.metrics
¶
Fix Se ha corregido un error en
metrics.plot_roc_curve
por el que se pasaba el nombre del estimador enmetrics.RocCurveDisplay
en lugar del parámetroname
. El resultado es un gráfico diferente cuando se llama ametrics.RocCurveDisplay.plot
para las siguientes veces. #16500 por Guillaume Lemaitre.Fix Se ha corregido un error en
metrics.plot_precision_recall_curve
por el que se pasaba el nombre del estimador enmetrics.PrecisionRecallDisplay
en lugar del parámetroname
. El resultado es un gráfico diferente cuando se llama ametrics.PrecisionRecallDisplay.plot
para las veces siguientes. #16505 por Guillaume Lemaitre.
sklearn.neighbors
¶
Fix Corregir un error que convertía una lista de arreglos en un arreglo de objetos 2-D en lugar de un arreglo 1-D que contenía arreglo NumPy. Este error afectaba a
neighbors.NearestNeighbors.radius_neighbors
. #16076 por Guillaume Lemaitre y Alex Shacked.
Versión 0.22.1¶
Enero 2 2020
Esta es una versión de corrección de errores para resolver principalmente algunos problemas de empaquetado de la versión 0.22.0. También incluye mejoras menores en la documentación y algunas correcciones de errores.
Registro de cambios¶
sklearn.cluster
¶
Fix
cluster.KMeans
conalgorithm="elkan"
ahora utiliza el mismo criterio de parada que con elalgorithm="full"
por defecto. #15930 por @inder128.
sklearn.inspection
¶
Fix
inspection.permutation_importance
devolverá las mismasimportancias
cuando se dé unestado_aleatorio
tanto paran_jobs=1
como paran_jobs>1
tanto con backends de memoria compartida (seguridad de hilos) como de memoria aislada, backends basados en procesos. También hay que evitar que los datos sean de tipo objeto y evitar el error de sólo lectura en dataframes grandes conn_jobs>1
como se informó en #15810. Seguimiento de #15898 por Shivam Gargsya. #15933 por Guillaume Lemaitre y Olivier Grisel.Fix
inspection.plot_partial_dependence
yinspection.PartialDependenceDisplay.plot
ahora comprueban consistentemente el número de ejes pasados. #15760 por Thomas Fan.
sklearn.metrics
¶
Fix
metrics.plot_confusion_matrix
ahora genera un error cuandonormalize
no es válido. Anteriormente, se ejecutaba bien sin normalización. #15888 por Hanmin Qin.Fix
metrics.plot_confusion_matrix
ahora colorea el color de la etiqueta correctamente para maximizar el contraste con su fondo. #15936 por Thomas Fan y @DizietAsahi.Fix
metrics.classification_report
ya no ignora el valor del argumento de la palabra clavezero_division
. #15879 por Bibhash Chandra Mitra.Fix Corregido un error en
metrics.plot_confusion_matrix
para pasar correctamente el parámetrovalues_format
a la llamadaConfusionMatrixDisplay
plot(). #15937 por Stephen Blystone.
sklearn.model_selection
¶
Fix
model_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
aceptan valores escalares proporcionados enfit_params
. El cambio en 0.22 rompía la compatibilidad con versiones anteriores. #15863 por Adrin Jalali y Guillaume Lemaitre.
sklearn.naive_bayes
¶
Fix Eliminado el decorador
abstractmethod
para el método_check_X
ennaive_bayes.BaseNB
que podía romper los proyectos posteriores que heredaban de esta clase base pública obsoleta. #15996 por Brigitta Sipőcz.
sklearn.preprocessing
¶
Fix
preprocessing.QuantileTransformer
ahora garantiza que el atributoquantiles_
esté completamente ordenado de forma no decreciente. #15751 by Tirth Patel.
sklearn.semi_supervised
¶
Fix
semi_supervised.LabelPropagation
ysemi_supervised.LabelSpreading
ahora permiten llamar a la función núcleo para devolver la matriz de ponderaciones dispersa. #15868 por Niklas Smedemark-Margulies.
sklearn.utils
¶
Fix
utils.check_array
ahora convierte correctamente DataFrame de pandas con columnas booleanas a flotantes. #15797 por Thomas Fan.Fix
utils.check_is_fitted
acepta de nuevo un argumento explícitoattributes
para comprobar atributos específicos como marcadores explícitos de un estimador ajustado. Cuando no se proporcionanattributes
explícitos, sólo se utilizan como marcadores «ajustados» los atributos que terminan con un guión bajo y no empiezan con un guión bajo doble. El argumentoall_or_any
ya no está obsoleto. Este cambio se realiza para restaurar cierta compatibilidad con el comportamiento de esta utilidad en la versión 0.21. #15947 por Thomas Fan.
Version 0.22.0¶
Diciembre 3 2019
Para una breve descripción de los principales aspectos de la versión, consulte Aspectos Destacados de scikit-learn 0.22.
Leyenda para registros de cambios¶
Major Feature : algo grande que no se podía hacer antes.
Feature : algo que no podías hacer antes.
Efficiency : una característica existente ahora puede no requerir tanto cálculo o memoria.
Enhancement : una mejora menor miscelánea.
Fix : algo que anteriormente no funcionaba como estaba documentado – o según las expectativas razonables – ahora debería funcionar.
API Change : tendrás que cambiar su código para tener el mismo efecto en el futuro; o una característica será eliminada en el futuro.
Actualización del sitio¶
Nuestro sitio web <https://scikit-learn.org/>`_ ha sido renovado y se le ha dado un nuevo aspecto #14849 por Thomas Fan.
Definición clara de la API pública¶
Scikit-learn tiene una API pública, y una API privada.
Hacemos todo lo posible para no romper la API pública, y para introducir únicamente cambios compatibles con las versiones anteriores que no requieran ninguna acción del usuario. Sin embargo, en los casos en que eso no es posible, cualquier cambio en la API pública está sujeto a un ciclo de obsolescencia de dos versiones menores. La API privada no está documentada públicamente y no está sujeta a ningún ciclo de obsolescencia, por lo que los usuarios no deberían confiar en su estabilidad.
Una función u objeto es público si está documentado en la Referencia API y si puede ser importado con una ruta de importación sin guiones bajos iniciales. Por ejemplo, sklearn.pipeline.make_pipeline
es pública, mientras que sklearn.pipeline._name_estimators
es privada. sklearn.ensemble._gb.BaseEnsemble
también es privado porque todo el módulo _gb
es privado.
Hasta la versión 0.22, algunas herramientas eran públicas de facto (sin guión bajo inicial), cuando deberían haber sido privadas en primer lugar. En la versión 0.22, estas herramientas se han hecho correctamente privadas, y se ha limpiado el espacio público de la API. Además, la importación de la mayoría de los submódulos está ahora obsoleta: se debe utilizar, por ejemplo, from sklearn.cluster import Birch
en lugar de from sklearn.cluster.birch import Birch
(en la práctica, birch.py
se ha movido a _birch.py
).
Nota
Todas las herramientas de la API pública deberían estar documentadas en la Referencia API. Si encuentras una herramienta pública (sin guión bajo inicial) que no está en la referencia de la API, significa que debería ser privada o estar documentada. Por favor, infórmanos abriendo una incidencia!
Este trabajo fue rastreado en issue 9250 y issue 12927.
Obsolescencias: usar FutureWarning
de ahora en adelante¶
Cuando una característica resulta obsoleta, las versiones anteriores de scikit-learn solían lanzar un DeprecationWarning
. Como los DeprecationWarnings
no son mostrados por defecto por Python, scikit-learn necesitaba recurrir a un filtro de advertencia personalizado para mostrar siempre las advertencias. Ese filtro a veces interfería con los filtros de advertencia personalizados de los usuarios.
A partir de la versión 0.22, scikit-learn mostrará FutureWarnings
para las obsolescencias, como recomienda la documentación de Python. FutureWarnings
se muestra siempre por defecto por Python, por lo que se ha eliminado el filtro personalizado y scikit-learn ya no entorpece con filtros de usuario. #15080 por Nicolas Hug.
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 modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
cluster.KTechns
cuandon_jobs=1
. Fixdecomposition.SparseCoder
,decomposition.DictionaryLearning
, ydecomposition.MiniBatchDictionaryLearning
Fixdecomposition.SparseCoder
conalgorithm='lasso_lars'
Fixdecomposition.SparsePCA
dondenormalize_components
no tiene efecto debido a la obsolescencia.ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
Fix , Feature , Enhancement .impute.IterativeImputer
cuandoX
tiene características sin valores faltantes. Featurelinear_model.Ridge
cuandoX
es disperso. Fixmodel_selection.StratifiedKFold
y cualquier uso decv=int
con un clasificador. Fixcross_decomposition.CCA
al usar scipy >= 1.3 Fix
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.base
¶
API Change Desde la versión 0.24
base.BaseEstimator.get_params
lanzará un AttributeError en lugar de devolver None para los parámetros que están en el constructor del estimador pero que no están almacenados como atributos en la instancia. #14464 por Joel Nothman.
sklearn.calibration
¶
Fix Se ha corregido un error que hacía que
calibration.CalibratedClassifierCV
fallara cuando se le daba un parámetrosample_weight
de tipolist
(en el caso de quesample_weights
no estuviera soportado por el estimador envuelto). #13575 por William de Vazelhes.
sklearn.cluster
¶
Feature
cluster.SpectralClustering
ahora acepta el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Enhancement
cluster.SpectralClustering
ahora acepta un parámetron_componentes
. Este parámetro extiende la funcionalidad de la claseSpectralClustering
para que coincida concluster.spectral_clustering
. #13726 por Shuzhe Xiao.Fix Se ha corregido un error por el que
cluster.KMeans
producía resultados inconsistentes entren_jobs=1
yn_jobs>1
debido al manejo del estado aleatorio. #9288 por Bryan Yang.Fix Se ha corregido un error por el que el algoritmo
elkan
encluster.KMeans
producía un fallo de segmentación en arreglos grandes debido al desbordamiento del índice de enteros. #15057 por Vladimir Korolev.Fix
MeanShift
ahora acepta un max_iter con un valor por defecto de 300 en lugar de usar siempre el 300 por defecto. También expone ahora unn_iter_
que indica el número máximo de iteraciones realizadas en cada semilla. #15120 por Adrin Jalali.Fix
cluster.AgglomerativeClustering
ycluster.FeatureAgglomeration
ahora lanzan un error siaffinity='cosine'
yX
tiene muestras que son todos ceros. #7943 por @mthorrell.
sklearn.compose
¶
Feature Añade
compose.make_column_selector
que se utiliza concompose.ColumnTransformer
para seleccionar las columnas del DataFrame en base al nombre y al dtype. #12303 por Thomas Fan.Fix Corregido un error en
compose.ColumnTransformer
que fallaba al seleccionar las columnas adecuadas cuando se usaba una lista booleana, con NumPy anterior a la 1.12. #14510 por Guillaume Lemaitre.Fix Se ha corregido un error en
compose.TransformedTargetRegressor
que no pasaba**fit_params
al regresor subyacente. #14890 por Miguel Cabrera.Fix La
compose.ColumnTransformer
ahora requiere que el número de características sea consistente entrefit
ytransform
. Ahora se lanza unFutureWarning
, y esto dará un error en 0.24. Si el número de características no es consistente y se utiliza la indexación negativa, se produce un error. #14544 by Adrin Jalali.
sklearn.cross_decomposition
¶
Feature
cross_decomposition.PLSCanonical
ycross_decomposition.PLSRegression
tienen una nueva funcióninverse_transform
para transformar los datos al espacio original. #15304 by Jaime Ferrando Huertas.Enhancement
decomposition.KernelPCA
ahora comprueba correctamente los valores propios encontrados por el solucionador para problemas numéricos o de condicionamiento. Esto asegura la consistencia de los resultados a través de los solucionadores (diferentes opciones paraeigen_solver
), incluyendo solucionadores aproximados como'randomized'
y'lobpcg'
(ver #12068). #12145 por Sylvain MariéFix Se ha corregido un error por el que
cross_decomposition.PLSCanonical
ycross_decomposition.PLSRegression
daban un error cuando se ajustaban con una matriz objetivoY
en la que la primera columna era constante. #13609 por Camila Williamson.Fix
cross_decomposition.CCA
ahora produce los mismos resultados con scipy 1.3 y versiones anteriores de scipy. #15661 por Thomas Fan.
sklearn.datasets
¶
Feature
datasets.fetch_openml
ahora soporta datos heterogéneos usando pandas estableciendoas_frame=True
. #13902 por Thomas Fan.Feature
datasets.fetch_openml
ahora incluye eltarget_names
en el Bunch devuelto. #15160 por Thomas Fan.Enhancement Se ha añadido el parámetro
return_X_y
adatasets.fetch_20newsgroups
ydatasets.fetch_olivetti_faces
. #14259 por Sourav Singh.Enhancement
datasets.make_classification
ahora acepta el parámetroweights
, es decir, lista o numpy.array, en lugar de sólo lista. #14764 por Cat Chenal.- Enhancement El parámetro
normalize
fue agregado a datasets.fetch_20newsgroups_vectorized
. #14740 by Stéphan Tulkens
- Enhancement El parámetro
Fix Corregido un error en
datasets.fetch_openml
, que fallaba al cargar un conjunto de datos OpenML que contenía una característica ignorada. #14623 por Sarra Habchi.
sklearn.decomposition
¶
Efficiency
decomposition.NMF(solver='mu')
ajustado en matrices de entrada dispersas ahora utiliza la agrupación para evitar asignar brevemente un arreglo con tamaño (#elementos distintos de cero, n_componentes). #15257 by Mart Willocx.Enhancement
decomposition.dict_learning
ydecomposition.dict_learning_online
aceptan ahoramethod_max_iter
y lo pasan adecomposition.sparse_encode
. #12650 por Adrin Jalali.Enhancement
decomposition.SparseCoder
,decomposition.DictionaryLearning
, ydecomposition.MiniBatchDictionaryLearning
ahora toman un parámetrotransform_max_iter
y lo pasan adecomposition.dict_learning
odecomposition.sparse_encode
. #12650 por Adrin Jalali.Enhancement
decomposition.IncrementalPCA
ahora acepta matrices dispersas como entrada, convirtiéndolas en densas por lotes evitando así la necesidad de almacenar toda la matriz densa de una vez. #13960 by Scott Gigante.Fix
decomposition.sparse_encode
pasa ahora elmax_iter
allinear_model.LassoLars
subyacente cuandoalgorithm='lasso_lars'
. #12650 por Adrin Jalali.
sklearn.dummy
¶
Fix
dummy.DummyClassifier
ahora maneja la comprobación de la existencia de la constante proporcionada en los casos de multi-salida. #14908 por Martina G. Vilas.API Change El valor por defecto del parámetro
strategy
endummy.DummyClassifier
cambiará de'estratificado'
en la versión 0.22 a'previo'
en la 0.24. Se genera un FutureWarning cuando se utiliza el valor por defecto. #15382 por Thomas Fan.API Change El atributo
outputs_2d_
está obsoleto endummy.DummyClassifier
ydummy.DummyRegressor
. Es equivalente an_outputs > 1
. #14933 por Nicolas Hug
sklearn.ensemble
¶
Major Feature Añadidos
ensemble.StackingClassifier
yensemble.StackingRegressor
para apilar predictores usando un clasificador o regresor final. #11047 por Guillaume Lemaitre y Caio Oliveira y #15138 por Jon Cusick..Major Feature Se han realizado muchas mejoras en
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
:Feature Los estimadores ahora soportan de forma nativa datos densos con valores perdidos tanto para el entrenamiento como para la predicción. También soportan valores infinitos. #13911 y #14406 por Nicolas Hug, Adrin Jalali y Olivier Grisel.
Feature Los estimadores tienen ahora un parámetro adicional
warm_start
que permite el arranque en caliente. #14012 por Johann Faouzi.Feature
inspection.partial_dependence
yinspection.plot_partial_dependence
ahora soportan el método rápido de “recursión” para ambos estimadores. #13769 por Nicolas Hug.Enhancement para
ensemble.HistGradientBoostingClassifier
la pérdida o puntuación de entrenamiento se controla ahora en una submuestra estratificada por clases para preservar el equilibrio de clases del conjunto de entrenamiento original. #14194 por Johann Faouzi.Enhancement
ensemble.HistGradientBoostingRegressor
ahora soporta la pérdida “least_absolute_deviation”. #13896 por Nicolas Hug.Fix Los estimadores ahora colocan los datos de entrenamiento y validación por separado para evitar cualquier fuga de datos. #13933 por Nicolas Hug.
Fix Se ha corregido un error por el que la parada temprana se rompía con objetivos de cadena. #14710 por Guillaume Lemaitre.
Fix
ensemble.HistGradientBoostingClassifier
ahora da un error si se da la pérdidacategorical_crossentropy
para un problema de clasificación binaria. #14869 por Adrin Jalali.
Ten en cuenta que los pickles de 0.21 no funcionarán en 0.22.
Enhancement Añadido el argumento
max_samples
que permite limitar el tamaño de las muestras de bootstrap para que sea menor que el tamaño del conjunto de datos. Añadido aensemble.RandomForestClassifier
,ensemble.RandomForestRegressor
,ensemble.ExtraTreesClassifier
,ensemble.ExtraTreesRegressor
. #14682 por Matt Hancock y #5963 por Pablo Duboue.Fix
ensemble.VotingClassifier.predict_proba
ya no estará presente cuandovoting='hard'
. #14287 por Thomas Fan.Fix El atributo
named_estimators_
enensemble.VotingClassifier
yensemble.VotingRegressor
ahora se asigna correctamente a los estimadores eliminados. Anteriormente, la asignación denamed_estimators_
era incorrecta cuando uno de los estimadores era eliminado. #15375 por Thomas Fan.Fix Ejecutar por defecto
utils.estimator_checks.check_estimator
tanto enensemble.VotingClassifier
como enensemble.VotingRegressor
. Esto lleva a resolver problemas relacionados con la consistencia de la forma durantepredict
, que fallaba cuando los estimadores subyacentes no daban como resultado dimensiones de matriz consistentes. Tenga en cuenta que debe ser reemplazado por la refactorización de las pruebas comunes en el futuro. #14305 por Guillaume Lemaitre.Fix
ensemble.AdaBoostClassifier
calcula las probabilidades basadas en la función de decisión como en la literatura. Así,predict
ypredict_proba
dan resultados consistentes. #14114 por Guillaume Lemaitre.Fix Los estimadores de apilamiento y votación ahora aseguran que sus estimadores subyacentes son todos los clasificadores o todos los regresores.
ensemble.StackingClassifier
,ensemble.StackingRegressor
, yensemble.VotingClassifier
yVotingRegressor
ahora lanzan mensajes de error consistentes. #15084 por Guillaume Lemaitre.Fix
ensemble.AdaBoostRegressor
donde la pérdida debe ser normalizada por el máximo de las muestras con pesos no nulos solamente. #14294 por Guillaume Lemaitre.API Change
presort
está ahora obsoleto enensemble.GradientBoostingClassifier
yensemble.GradientBoostingRegressor
, y el parámetro no tiene efecto. Se recomienda a los usuarios utilizarensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
en su lugar. #14907 por Adrin Jalali.
sklearn.feature_extraction
¶
Enhancement Ahora se lanzará una advertencia si la elección de un parámetro significa que otro parámetro no será utilizado al llamar al método fit() para
feature_extraction.text.HashingVectorizer
,feature_extraction.text.CountVectorizer
yfeature_extraction.text.TfidfVectorizer
. #14602 por Gaurav Chawla.Fix Las funciones creadas por
build_preprocessor
ybuild_analyzer
defeature_extraction.text.VectorizerMixin
ahora pueden ser pickled. #14430 por Dillon Niederhut.Fix
feature_extraction.text.strip_accents_unicode
ahora elimina correctamente los acentos de las cadenas que están en forma normalizada NFKD. #15100 por Daniel Grady.Fix Se ha corregido un error que provocaba que
feature_extraction.DictVectorizer
lanzara unOverflowError
durante la operación detransformación
al producir una matrizscipy.sparse
en datos de entrada grandes. #15463 por Norvan Sahiner.API Change Parámetro
copy
obsoleto no utilizado parafeature_extraction.text.TfidfVectorizer.transform
será eliminado en la v0.24. #14520 por Guillem G. Subies.
sklearn.feature_selection
¶
Enhancement Actualización de los siguientes estimadores
feature_selection
para permitir valores NaN/Inf entransformación
yfit
:feature_selection.RFE
,feature_selection.RFECV
,feature_selection.SelectFromModel
, yfeature_selection.VarianceThreshold
. Tenga en cuenta que si el estimador subyacente del selector de características no permite NaN/Inf, seguirá dando errores, pero los propios selectores de características ya no imponen esta restricción innecesariamente. #11635 by Alec Peters.Fix Se ha corregido un error por el que
feature_selection.VarianceThreshold
conthreshold=0
no eliminaba las características constantes debido a la inestabilidad numérica, utilizando el rango en lugar de la varianza en este caso. #13704 por Roddy MacSween.
sklearn.gaussian_process
¶
Feature Modelos de procesos gaussianos en datos estructurados:
gaussian_process.GaussianProcessRegressor
ygaussian_process.GaussianProcessClassifier
ahora pueden aceptar una lista de objetos genéricos (por ejemplo, cadenas, árboles, gráficos, etc.) como el argumentoX
para sus métodos de entrenamiento/predicción. Debe proporcionarse un núcleo definido por el usuario para calcular la matriz núcleo entre los objetos genéricos, y debe heredar degaussian_process.kernels.GenericKernelMixin
para notificar al modelo GPR/GPC que maneja muestras no vectoriales. #15557 por Yu-Hang Tang.Efficiency
gaussian_process.GaussianProcessClassifier.log_marginal_likelihood
ygaussian_process.GaussianRegressor.log_marginal_likelihood
aceptan ahora un argumento de palabra claveclone_kernel=True
. Cuando se establece enFalse
, el atributo kernel se modifica, pero puede resultar en una mejora del rendimiento. #14378 by Masashi Shibata.API Change Desde la versión 0.24
gaussian_process.kernels.Kernel.get_params
lanzará unAttributeError
en lugar de devolverNone
para los parámetros que están en el constructor del estimador pero que no están almacenados como atributos en la instancia. #14464 por Joel Nothman.
sklearn.impute
¶
Major Feature Añadida
impute.KNNImputer
, para imputar valores faltantes usando k-Nearest Neighbors. #12852 por Ashim Bhattarai y Thomas Fan y #15010 por Guillaume Lemaitre.Feature
impute.IterativeImputer
tiene una nueva banderaskip_compute
que es False por defecto, la cual, cuando es True, omitirá el cálculo de las características que no tienen valores faltantes durante la fase de ajuste. #13773 por Sergey Feldman.Efficiency
impute.MissingIndicator.fit_transform
evitar el cálculo repetido de la matriz enmascarada. #14356 por Harsh Soni.Fix
impute.IterativeImputer
ahora funciona cuando sólo hay una característica. Por Sergey Feldman.Fix Se ha corregido un error en
impute.IterativeImputer
por el que las características se imputaban en el orden inverso al deseado conimputation_order
ya sea"ascendente"` o ``"descendente"
. #15393 por Venkatachalam N.
sklearn.inspection
¶
Major Feature
inspection.permutation_importance
se ha añadido para medir la importancia de cada característica en un modelo entrenado arbitrariamente con respecto a una función de puntuación dada. #13146 por Thomas Fan.Feature
inspection.partial_dependence
yinspection.plot_partial_dependence
soportan ahora el método de recursión rápida paraensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
. #13769 por Nicolas Hug.característica.Enhancement
inspection.plot_partial_dependence
ha sido extendida para soportar la nueva API de visualización descrita en el Manual de Usuario. #14646 por Thomas Fan.Enhancement
inspection.partial_dependence
acepta pandas DataFrame ypipeline.Pipeline
que contienecompose.ColumnTransformer
. Ademásinspection.plot_partial_dependence
utilizará los nombres de las columnas por defecto cuando se pase un dataframe. #14028 y #15429 de Guillaume Lemaitre.
sklearn.kernel_approximation
¶
Fix Se ha corregido un error por el que
kernel_approximation.Nystroem
daba lugar a unKeyError
al usarkernel="precomputed"
. #14706 por Venkatachalam N.
sklearn.linear_model
¶
Efficiency El solucionador de regresión logística “liblinear” es ahora más rápido y requiere menos memoria. #14108, #14170, #14296 by Alex Henrie.
Enhancement
linear_model.BayesianRidge
ahora acepta los hiperparámetrosalpha_init
ylambda_init
que pueden utilizarse para establecer el valor inicial del procedimiento de maximización en fit. #13618 por Yoshihiro Uchida.Fix
linear_model.Ridge
ahora ajusta correctamente una intercepción cuandoX
es dispersa,solver="auto"
yfit_intercept=True
, porque el solver por defecto en esta configuración ha cambiado asparse_cg
, que puede ajustar una intercepción con datos dispersos. #13995 por Jérôme Dockès.Fix
linear_model.Ridge
consolver='sag'
ahora acepta arreglos ordenados en F y no contiguas y hace una conversión en lugar de fallar. #14458 por Guillaume Lemaitre.Fix
linear_model.LassoCV
ya no fuerzaprecompute=False
al ajustar el modelo final. #14591 por Andreas Müller.Fix
linear_model.RidgeCV
ylinear_model.RidgeClassifierCV
ahora puntúan correctamente cuandocv=None
. #14864 by Venkatachalam N.Fix Se ha corregido un error en
linear_model.LogisticRegressionCV
por el que el atributoscores_
,n_iter_
ycoefs_paths_
tenían una ordenación errónea conpenalty='elastic-net'
. #15044 por Nicolas HugFix
linear_model.MultiTaskLassoCV
ylinear_model.MultiTaskElasticNetCV
con X de tipo int yfit_intercept=True
. #15086 by Alex Gramfort.Fix El solucionador liblinear ahora soporta
sample_weight
. #15038 por Guillaume Lemaitre.
sklearn.manifold
¶
Feature
manifold.Isomap
,manifold.TSNE
, ymanifold.SpectralEmbedding
ahora aceptan el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Feature Expuesto el parámetro
n_jobs
enmanifold.TSNE
para el cálculo multi-core del gráfico de vecinos. Este parámetro no tiene impacto cuandometric="precomputed"
o (metric="euclidean"
ymethod="exact"
). #15082 by Roman Yurchak.Efficiency Mejorada la eficiencia de
manifold.TSNE
cuandomethod="barnes-hut"
calculando el gradiente en paralelo. #13213 por Thomas MoreauFix Se ha corregido un error por el que
manifold.spectral_embedding
(y por tantomanifold.SpectralEmbedding
ycluster.SpectralClustering
) calculaba valores propios erróneos coneigen_solver='amg'
cuandon_samples < 5 * n_components
. #14647 por Andreas Müller.Fix Se ha corregido un error en
manifold.spectral_embedding
utilizado enmanifold.SpectralEmbedding
ycluster. SpectralClustering
dondeeigen_solver="amg"
a veces resultaba en un LinAlgError. #13393 por Andrew Knyazev #13707 por Scott WhiteAPI Change El atributo
training_data_
obsoleto no utilizado enmanifold.Isomap
. #10482 por Tom Dupre la Tour.
sklearn.metrics
¶
Major Feature
metrics.plot_roc_curve
se ha añadido para trazar curvas roc. Esta función introduce la API de visualización descrita en el Manual de Usuario. #14357 por Thomas Fan.Feature Se ha añadido un nuevo parámetro
división_cero
a múltiples métricas de clasificación:precision_score
,recall_score
,f1_score
,fbeta_score
,precision_recall_fscore_support
,classification_report
. Esto permite establecer el valor devuelto para métricas mal definidas. #14900 por Marc Torrellas Socastro.Feature Añadida la métrica
metrics.pairwise.nan_euclidean_distances
, que calcula las distancias euclidianas en presencia de valores faltantes. #12852 por Ashim Bhattarai y Thomas Fan.Feature Se han añadido nuevas métricas de clasificación
metrics.ndcg_score
ymetrics.dcg_score
para calcular la Ganancia Acumulativa Descontada y la Ganancia Acumulativa Descontada Normalizada. #9951 por Jérôme Dockès.Feature Se ha añadido
metrics.plot_precision_recall_curve
para trazar curvas de precisión y recuperación. #14936 por Thomas Fan.Feature Se ha añadido
metrics.plot_confusion_matrix
para trazar matrices de confusión. #15083 por Thomas Fan.Feature Añadido soporte multiclase a
metrics.roc_auc_score
con los correspondientes scorers'roc_auc_ovr'
,'roc_auc_ovo'
,'roc_auc_ovr_weighted'
, y'roc_auc_ovo_weighted'
. #12789 y #15274 por Kathy Chen, Mohamed Maskani, y Thomas Fan.Feature Añadir
metrics.mean_tweedie_deviance
que mide la desviación de Tweedie para un parámetropower
dado. También añade la desviación media de Poissonmetrics.mean_poisson_deviance
y la desviación media de Gammametrics.mean_gamma_deviance
que son casos especiales de la desviación de Tweedie parapower=1
ypower=2
respectivamente. #13938 por Christian Lorentzen y Roman Yurchak.característica.Efficiency Mejora del rendimiento de
metrics.pairwise.manhattan_distances
en el caso de matrices dispersas. #15049 porPaolo Toccaceli <ptocca>
.Enhancement El parámetro
beta
enmetrics.fbeta_score
se ha actualizado para aceptar el valor cero yfloat('+inf')
. #13231 por Dong-hee Na.Enhancement Añadido el parámetro
squared
enmetrics.mean_squared_error
para devolver el error medio cuadrático. #13467 por Urvang Patel.Enhancement Permitir el cálculo de métricas promediadas en el caso de que no haya verdaderos positivos. #14595 por Andreas Müller.
Enhancement La métrica Multilabel ahora soporta listas de listas como entrada. #14865 Srivatsan Ramesh, Herilalaina Rakotoarison, Léonard Binet.
Enhancement
metrics.median_absolute_error
ahora soporta el parámetromultioutput
. #14732 por Agamemnon Krasoulis.Enhancement “roc_auc_ovr_weighted” y “roc_auc_ovo_weighted” se pueden utilizar ahora como el parámetro scoring de las herramientas de selección de modelos. #14417 por Thomas Fan.
Enhancement
metrics.confusion_matrix
acepta un parámetronormalize
que permite normalizar la matriz de confusión por columnas, filas o en general. #15625 porGuillaume Lemaitre <glemaitre>
.Fix Se produce un ValueError en
metrics.silhouette_score
cuando una matriz de distancia precalculada contiene entradas diagonales distintas de cero. #12258 por Stephen Tierney.API Change
scoring="neg_brier_score"
debería usarse en lugar descoring="brier_score_loss"
que ahora está obsoleto. #14898 por Stefan Matcovici.
sklearn.model_selection
¶
Efficiency Mejora del rendimiento de la puntuación multimétrica en
model_selection.cross_validate
,model_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
. #14593 por Thomas Fan.Enhancement
model_selection.learning_curve
ahora acepta el parámetroreturn_times
que puede ser utilizado para recuperar los tiempos de cálculo con el fin de trazar la escalabilidad del modelo (ver ejemplo de learning_curve). #13938 por Hadrien Reboul.Enhancement
model_selection.RandomizedSearchCV
acepta ahora listas de distribución de parámetros. #14549 by Andreas Müller.Fix Reimplementado
model_selection.StratifiedKFold
para corregir un problema en el que un conjunto de pruebas podría sern_classes
mayor que otro. Los conjuntos de pruebas ahora deben tener un tamaño casi igual. #14704 por Joel Nothman.Fix El atributo
cv_results_
demodel_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
ahora sólo contiene estimadores no ajustados. Esto ahorra potencialmente mucha memoria ya que el estado de los estimadores no se almacena. ##15096 por Andreas Müller.API Change
model_selection.KFold
ymodel_selection.StratifiedKFold
ahora lanzan una advertencia si se establecerandom_state
peroshuffle
es False. Esto generará un error en 0.24.
sklearn.multioutput
¶
Fix
multioutput.MultiOutputClassifier
ahora tiene el atributoclasses_
. #14629 por Agamemnon Krasoulis.Fix
multioutput.MultiOutputClassifier
ahora tienepredict_proba
como propiedad y se puede comprobar conhasattr
. #15488 #15490 por Rebekah Kim
sklearn.naive_bayes
¶
Major Feature Añadido
naive_bayes.CategoricalNB
que implementa el clasificador Categorical Naive Bayes. #12569 por Tim Bicker y Florian Wilhelm.
sklearn.neighbors
¶
Major Feature Se ha añadido
neighbors.KNeighborsTransformer
yneighbors.RadiusNeighborsTransformer
, que transforman el conjunto de datos de entrada en un gráfico de vecinos dispersos. Proporcionan un control más preciso de los cálculos de vecinos más cercanos y permiten un fácil almacenamiento en caché para su uso múltiple. #10482 por Tom Dupre la Tour.Feature |
Nighbors.KNeighborsClassifier
,neighbors.KNeighborsRegressor
,neighbors.RadiusNeighborsClassifier
,neighbors.RadiusNeighborsRegressor
, yneighbors.LocalOutlierFactor
aceptan ahora el gráfico de vecinos dispersos precalculado como entrada. #10482 por Tom Dupre la Tour y Kumar Ashutosh.Feature
neighbors.RadiusNeighborsClassifier
ahora soporta la predicción de probabilidades mediantepredict_proba
y soporta más opciones de outlier_label: “most_frequent”, o diferentes outlier_labels para multi-salidas. #9597 by Wenbo Zhao.Efficiency Mejoras en la eficiencia de
neighbors.RadiusNeighborsClassifier.predict
. #9597 por Wenbo Zhao.Fix
neighbors.KNeighborsRegressor
ahora lanza un error cuandometric='precomputed'
y se ajusta a datos no cuadrados. #14336 por Gregory Dexter.
sklearn.neural_network
¶
Feature Añade el parámetro
max_fun
enneural_network.BaseMultilayerPerceptron
,neural_network.MLPRegressor
, yneural_network.MLPClassifier
para dar control sobre el número máximo de evaluación de funciones para no cumplir con la mejoratol
. #9274 por Daniel Perry.
sklearn.pipeline
¶
Enhancement
pipeline.Pipeline
ahora soporta score_samples si el estimador final lo hace. #13806 por Anaël Beaugnon.Fix El
fit
enFeatureUnion
ahora aceptafit_params
para pasar a los transformadores subyacentes. #15119 por Adrin Jalali.API Change
None
como transformador está ahora obsoleto enpipeline.FeatureUnion
. Por favor, utiliza'drop'
en su lugar. #15053 por Thomas Fan.
sklearn.preprocessing
¶
Efficiency
preprocessing.PolynomialFeatures
es ahora más rápida cuando los datos de entrada son densos. #13290 por Xavier Dupré.Enhancement Evita la copia innecesaria de datos al ajustar los preprocesadores
preprocessing.StandardScaler
,preprocessing.MinMaxScaler
,preprocessing.MaxAbsScaler
,preprocessing.RobustScaler
ypreprocessing.QuantileTransformer
lo que supone una ligera mejora de rendimiento. #13987 por Roman Yurchak.Fix KernelCenterer ahora lanza un error cuando se ajusta a un no cuadrado
preprocessing.KernelCenterer
#14336 por Gregory Dexter.
sklearn.model_selection
¶
Fix
model_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
soportan ahora la propiedad _pairwise, que evita un error durante la validación cruzada para los estimadores con entradas pairwise (comoneighbors. KNeighborsClassifier
cuando metric se establece como “precomputed”). #13925 por Isaac S. Robson y #15524 por Xun Tang.
sklearn.svm
¶
Enhancement
svm.SVC
ysvm.NuSVC
ahora aceptan un parámetrobreak_ties
. Este parámetro da como resultado que predict rompa los lazos de acuerdo con los valores de confianza de decision_function, ifdecision_function_shape='ovr'
, y el número de clases de destino > 2. #12557 de Adrin Jalali.Enhancement Los estimadores SVM ahora arrojan un error más específico cuando
kernel='precomputed'
y se ajustan a datos no cuadrados. #14336 por Gregory Dexter.Fix
svm.SVC
,svm.SVR
,svm.NuSVR
ysvm. neClassSVM
cuando se recibían valores negativos o cero para el parámetrosample_weight
en ajuste del método(), se generaba un modelo no válido. Este comportamiento ocurrió sólo en algunos escenarios límite. #14286 por Alex Shacked.Fix El atributo
n_support_
desvm.SVR
ysvm.OneClassSVM
no se inicializó previamente, y tenía el tamaño 2. Ahora tiene el tamaño 1 con el valor correcto. #15099 por Nicolas Hug.Fix se corrigió un error en
BaseLibSVM._sparse_fit
donde n_SV=0 provoca un ZeroDivisionError. #14894 por Danna Naser.Fix El solucionador liblinear ahora soporta
sample_weight
. #15038 por Guillaume Lemaitre.
sklearn.tree
¶
Feature Añade una poda mínima de complejidad de costo, controlada por
ccp_alpha
, atree.DecisionTreeClassifier
,tree.DecisionTreeRegressor
,tree.ExtraTreeClassifier
,tree.ExtraTreeRegressor
,ensemble. andomForestClassifier
,ensemble.RandomForestRegressor
,ensemble.ExtraTreesClassifier
,ensemble.ExtraTreesRegressor
,ensemble.GradientBoostingClassifier
, yensemble.GradientBoostingRegressor
. #12887 por Thomas Fan.API Change El parámetro
presort
está ahora obsoleto entree.DecisionTreeClassifier
ytree.DecisionTreeRegressor
, y el parámetro no tiene efecto. #14907 por Adrin Jalali.API Change Los atributos
classes_
yn_classes_
detree.DecisionTreeRegressor
están ahora obsoletos. #15028 por Mei Guan, Nicolas Hug, y Adrin Jalali.
sklearn.utils
¶
Feature
check_estimator
ahora puede generar comprobaciones estableciendogenerate_only=True
. Anteriormente, la ejecución decheck_estimator
se detenía cuando fallaba la primera comprobación. Congenerate_only=True
, todas las comprobaciones pueden ejecutarse independientemente e informar de las que fallan. Lea más en Rodando tu propio estimador. #14381 por Thomas Fan.Feature Se ha añadido un decorador específico de pytest,
parametrize_with_checks
, para parametrizar las comprobaciones del estimador para una lista de estimadores. #14381 por Thomas Fan.Feature Una nueva variable aleatoria,
utils.fixes.loguniform
implementa una variable aleatoria log-uniforme (por ejemplo, para su uso en RandomizedSearchCV). Por ejemplo, los resultados1
,10
y100
son todos igualmente probables paraloguniform(1, 100)
. Ver #11232 de Scott Sievert y Nathaniel Saul, ySciPy PR 10815 <https://github.com/scipy/scipy/pull/10815>
.Enhancement
utils.safe_indexing
(ahora obsoleto) acepta un parámetroaxis
para indexar array-like a través de filas y columnas. La indexación de columnas se puede hacer en un array NumPy, una matriz dispersa SciPy y un DataFrame de Pandas. Se ha realizado una refactorización adicional. #14035 y #14475 por Guillaume Lemaitre.Enhancement
utils.extmath.safe_sparse_dot
funciona entre 3D+ ndarray y matriz dispersa. #14538 por Jérémie du Boisberranger.Fix
utils.check_array
ahora genera un error en lugar de convertir NaN en entero. #14872 por Roman Yurchak.Fix
utils.check_array
detectará ahora correctamente los tipos de datos numéricos en los dataframes de pandas, corrigiendo un error por el quefloat32
se convertía enfloat64
innecesariamente. #15094 por Andreas Müller.API Change Las siguientes utils ya son obsoletas y ahora son privadas:
choose_check_classifiers_labels
enforce_estimator_tags_y
mocking.MockDataFrame
mocking.CheckingClassifier
optimize.newton_cg
random.random_choice_csc
utils.choose_check_classifiers_labels
utils.enforce_estimator_tags_y
utils.optimize.newton_cg
utils.random.random_choice_csc
utils.safe_indexing
utils.mocking
utils.fast_dict
utils.seq_dataset
utils.weight_vector
utils.fixes.parallel_helper
(eliminado)Todos los
utils.testing
exceptoall_estimators
que ahora está enutils
.
sklearn.isotonic
¶
Fix Se ha corregido un error por el que
isotonic.IsotonicRegression.fit
daba lugar a un error cuandoX.dtype == 'float32'
yX.dtype != y.dtype
. #14902 por Lucas.
Varios¶
Fix Port
lobpcg
de SciPy que implementa algunas correcciones de errores pero sólo está disponible en 1.3+. #13609 y #14971 por Guillaume Lemaitre.API Change Scikit-learn ahora convierte cualquier estructura de datos de entrada que implemente un arreglo de pato a un arreglo de numpy (usando
__array__
) para asegurar un comportamiento consistente en lugar de depender de__array_function__
(ver NEP 18). #14702 por Andreas Müller.API Change Sustituir las comprobaciones manuales por
check_is_fitted
. Los errores arrojados al utilizar un estimador no ajustado son ahora más uniformes. #13013 por Agamemnon Krasoulis.
Cambios en las comprobaciones de los estimadores¶
Estos cambios afectan principalmente a los desarrolladores de bibliotecas.
Ahora se espera que los estimadores lancen un
NotFittedError
si se llama apredict
otransform
antes defit
; antes se aceptaba unAttributeError
oValueError
. #13013 by by Agamemnon Krasoulis.Los clasificadores sólo binarios son ahora compatibles con las comprobaciones de los estimadores. Estos clasificadores deben tener la etiqueta de estimador
binary_only=True
. #13875 de Trevor Stephens.Se espera que los estimadores conviertan los datos de entrada (
X
,y
,sample_weights
) ennumpy.ndarray
y nunca llamen a__array_function__
en el tipo de datos original que se pasa (ver NEP 18). #14702 por Andreas Müller.La etiqueta del estimador
requires_positive_X
(para los modelos que requieren que X no sea negativo) es utilizada ahora porutils.estimator_checks.check_estimator
para asegurarse de que se emita un mensaje de error adecuado si X contiene algunas entradas negativas. #14680 por Alex Gramfort.Se añadió la comprobación de que los estimadores emparejan un error en los datos no cuadrados #14336 por Gregory Dexter.
Se añadieron dos estimadores de salida múltiple comunes
check_classifier_multioutput
ycheck_regressor_multioutput
. #13392 por Rok Mihevc.Fix Agregado
check_transformer_data_not_an_array
a las comprobaciones donde faltanFix La resolución de las etiquetas de estimadores ahora sigue a la MRO regular. Solían ser reemplazables solo una vez. #14884 por Andreas MuATIller.
Colaboradores de código y documentación¶
Gracias a quienes han contribuido al mantenimiento y mejora del proyecto desde la versión 0.21, incluyendo:
Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar, Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira, Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete, Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva, arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin, barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G. Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana, catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady, Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman, edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny, federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok, Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies, H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt, Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick, Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe, Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan, Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve, loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder, MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma, Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab, Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti, mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan, notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz, qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares, Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan, th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N, Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev, vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes, wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr, yokasre, Yu-Hang «Maxin» Tang, Yulia Zamriy, Zhao Feng