Versión 0.23.2¶
Modelos cambiados¶
Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
Fix atributo
inertia_
decluster.KMeans
ycluster.MiniBatchKMeans
.
Los detalles están listados en el registro de cambios a continuación.
(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)
Registro de cambios¶
sklearn.cluster
¶
Fix Se corrigió un error en
cluster.KMeans
donde los errores de redondeo podían impedir que se declarara la convergencia cuandotol=0
. #17959 por Jérémie du Boisberranger.Fix Se corrigió un error en
cluster.KMeans
ycluster.MiniBatchKMeans
donde la inercia informada se ponderaba incorrectamente por los pesos de la muestra. #17848 por Jérémie du Boisberranger.Fix Se corrigió un error en
cluster.MeanShift
conbin_seeding=True
. Cuando el ancho de banda estimado es 0, el comportamiento es equivalente abin_seeding=False
. #17742 por Jeremie du Boisberranger.Fix Se corrigió un error en
cluster.AffinityPropagation
, que da conglomerados(clusters) incorrectos cuando el dtype del arreglo es float32. #17995 por Thomaz Santana y Amanda Dsouza.
sklearn.decomposition
¶
Fix Se corrigió un error en
decomposition.MiniBatchDictionaryLearning.partial_fit
que debería actualizar el diccionario iterando solo una vez sobre un minilote. #17433 por Chiara Marmo.Fix Evita desbordamientos en Windows en
decomposition.IncrementalPCA.partial_fit
para valores grandes debatch_size
yn_samples
. #17985 por Alan Butler y Amanda Dsouza.
sklearn.ensemble
¶
Fix Se corrigió un error en
ensemble.MultinomialDeviance
donde el promedio de la pérdida logarítmica se calculaba incorrectamente como suma de pérdidas logarítmicas. #17694 por Markus Rempfler y Tsutomu Kusanagi.Fix Corregida la compatibilidad de
ensemble.StackingClassifier
yensemble.StackingRegressor
con los estimadores que no definenn_features_in_
. #17357 por Thomas Fan.
sklearn.feature_extraction
¶
Fix Corregido un error en
feature_extraction.text.CountVectorizer
donde la invarianza del orden de las muestras se rompía cuando se establecíamax_features
y las características tenían el mismo conteo. #18016 por Thomas Fan, Roman Yurchak, y Joel Nothman.
sklearn.linear_model
¶
Fix
linear_model.lars_path
no sobrescribeX
cuandoX_copy=True
yGram='auto'
. #17914 por Thomas Fan.
sklearn.manifold
¶
Fix Se corrigió un error donde
metrics.pairwise_distances
daba lugar a un error simetric='seuclidean'
yX
no es del tiponp.float64
. #15730 por Forrest Koch.
sklearn.metrics
¶
Fix Se corrigió un error en
metrics.mean_squared_error
donde el promedio de múltiples valores RMSE se calculaba incorrectamente como la raíz del promedio de múltiples valores MSE. #17309 por Swier Heeres.
sklearn.pipeline
¶
Fix
pipeline.FeatureUnion
genera una advertencia de obsolescencia cuando se incluyeNone
entransformer_list
. #17360 por Thomas Fan.
sklearn.utils
¶
Fix Corregida
utils.estimator_checks.check_estimator
para que todos los casos de prueba soporten la etiqueta de estimadorbinary_only
. #17812 por Bruno Charron.
Versión 0.23.1¶
18 de mayo de 2020
Registro de cambios¶
sklearn.cluster
¶
Efficiency Se ha mejorado la eficiencia de
cluster.KMeans
para conjuntos de datos muy pequeños. En particular, ya no puede generar hilos inactivos. #17210 y #17235 por :user:`Jeremie du Boisberranger <jeremiedbb>.Fix Se corrigió un error en
cluster.KMeans
donde las ponderaciones de la muestra proporcionadas por el usuario se modificaban en su lugar. #17204 por Jeremie du Boisberranger.
Varios¶
Fix Se corrigió un error en el
repr
de los estimadores de terceros que utilizan un parámetro**kwargs
en su constructor, cuandochanged_only
es True que es ahora el valor por defecto. #17205 por Nicolas Hug.
Versión 0.23.0¶
12 de mayo de 2020
Para una breve descripción de los principales aspectos de la versión, consulta Aspectos Destacados de scikit-learn 0.23.
Leyenda para registros de cambios¶
Major Feature : algo grande que antes no podías hacer.
Feature : algo que antes no podías hacer.
Efficiency : una característica existente ahora puede no requerir tanto cálculo o memoria.
Enhancement : una mejora menor variada.
Fix : algo que anteriormente no funcionaba según lo documentado – o según las expectativas razonables – ahora debería funcionar.
API Change : tendrás que cambiar tu código para tener el mismo efecto en el futuro; o una característica será eliminada en el futuro.
Aplicación de argumentos basados en palabras clave¶
En un esfuerzo por promover un uso claro y no ambiguo de la biblioteca, se espera que la mayoría de los parámetros de constructores y funciones se pasen como argumentos de palabra clave (es decir, utilizando la sintaxis param=valor
) en lugar de posicionales. Para facilitar la transición, se genera un FutureWarning
si un parámetro de palabra clave se utiliza como posicional. En la versión 1.0 (cambio de nombre de la 0.25), estos parámetros serán estrictamente de palabra clave, y se generará un TypeError
. #15005 por Joel Nothman, Adrin Jalali, Thomas Fan, y Nicolas Hug. Ver SLEP009 para más detalles.
Modelos cambiados¶
Los siguientes estimadores y funciones, cuando se ajustan con los mismos datos y parámetros, pueden producir modelos diferentes de la versión anterior. Esto suele ocurrir debido a cambios en la lógica de modelización (corrección de errores o mejoras), o en los procedimientos de muestreo aleatorio.
Fix
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
, yensemble.IsolationForest
.Fix
cluster.KMeans
conalgorithm="elkan"
yalgorithm="full"
.Fix
cluster.Birch
Fix
decomposition.PCA
conn_components='mle'
Enhancement
decomposition.NMF
ydecomposition.non_negative_factorization
con entrada de tipo float32.API Change
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
Fix
estimator_samples_
enensemble.BaggingClassifier
,ensemble.BaggingRegressor
yensemble.IsolationForest
Fix
ensemble.StackingClassifier
yensemble.StackingRegressor
consample_weight
Fix
linear_model.RANSACRegressor
consample_weight
.Fix
metrics.mean_squared_error
consquared
ymultioutput='raw_values'
.Fix
metrics.mutual_info_score
con puntuaciones negativas.Fix
metrics.confusion_matrix
con longitud ceroy_true
yy_pred
Fix
preprocessing.StandardScaler
conpartial_fit
y entrada dispersa.Fix
preprocessing.Normalizer
con norm=”max”Fix Cualquier modelo que utilice el solucionador
svm.libsvm
osvm.liblinear
, incluyendosvm.LinearSVC
,svm.LinearSVR
,svm.NuSVC
,svm.NuSVR
,svm.OneClassSVM
,svm.SVC
,svm.SVR
,linear_model.LogisticRegression
.Fix
tree.DecisionTreeClassifier
,tree.ExtraTreeClassifier
yensemble.GradientBoostingClassifier
así como el métodopredict
detree.DecisionTreeRegressor
,tree.ExtraTreeRegressor
, yensemble.GradientBoostingRegressor
y la entrada de sólo lectura float32 enpredict
,decision_path
ypredict_proba
.
Los detalles están listados en el registro de cambios a continuación.
(Mientras intentamos informar mejor a los usuarios proporcionando esta información, no podemos asegurar que esta lista esté completa.)
Registro de cambios¶
sklearn.cluster
¶
Efficiency
cluster.Birch
la implementación del método de predicción evita un alto consumo de memoria calculando la matriz de distancias utilizando un esquema en porciones. #16149 por Jeremie du Boisberranger y Alex Shacked.Efficiency Major Feature Las partes críticas de
cluster.KMeans
tienen una implementación más optimizada. El paralelismo es ahora sobre los datos en lugar de sobre las inicializaciones permitiendo una mejor escalabilidad. #11950 por Jeremie du Boisberranger.Enhancement
cluster.KMeans
ahora soporta datos dispersos cuandosolver = "elkan"
. #11950 por Jeremie du Boisberranger.Enhancement
cluster.AgglomerativeClustering
tiene una implementación más rápida y eficiente en memoria de la agrupación de enlazamiento único. #11514 por Leland McInnes.Fix
cluster.KMeans
conalgorithm="elkan"
ahora converge contol=0
como con elalgorithm="full"
por defecto. #16075 por Erich Schubert.Fix Se corrigió un error en
cluster.Birch
donde el parámetron_clusters
no podía tener un tiponp.int64
. #16484 por Jeremie du Boisberranger.Fix
cluster.AgglomerativeCluClustering
añadir error específico cuando la matriz de distancia no es cuadrada yaffinity=precomputed
. #16257 por Simona Maggio.API Change El parámetro
n_jobs
decluster.KMeans
,cluster.SpectralCoclustering
ycluster.SpectralBiclustering
está obsoleto. Ahora utilizan el paralelismo basado en OpenMP. Para más detalles sobre cómo controlar el número de hilos, consulte nuestras notas sobre Paralelismo. #11950 por Jeremie du Boisberranger.API Change El parámetro
precompute_distances
decluster.KMeans
está obsoleto. No tiene ningún efecto. #11950 por Jeremie du Boisberranger.API Change El parámetro
random_state
ha sido añadido acluster.AffinityPropagation
. #16801 por @rcwoolston y Chiara Marmo.
sklearn.compose
¶
Efficiency
compose.ColumnTransformer
es ahora más rápido cuando se trabaja con dataframes y se utilizan cadenas de caracteres para subconjuntos específicos de datos para transformadores. #16431 por Thomas Fan.Enhancement El método
get_feature_names
decompose.ColumnTransformer
ahora soporta columnas'passthrough'', siendo el nombre de la característica el nombre de la columna para un dataframe, o `'xi'
para el índice de la columnai
. #14048 por Lewis Ball.Fix El método
get_feature_names
decompose.ColumnTransformer
ahora devuelve resultados correctos cuando uno de los pasos del transformador se aplica en una lista vacía de columnas #15963 por Roman Yurchak.Fix
compose.ColumnTransformer.fit
dará error al seleccionar un nombre de columna que no es único en el dataframe. #16431 por Thomas Fan.
sklearn.datasets
¶
Efficiency
datasets.fetch_openml
ha reducido el uso de memoria porque ya no almacena el flujo de texto completo del conjunto de datos en memoria. #16084 por Joel Nothman.Feature
datasets.fetch_california_housing
ahora soporta datos heterogéneos utilizando pandas al estableceras_frame=True
. #15950 por Stephanie Andrews y Reshama Shaikh.Feature Los cargadores de conjuntos de datos incrustados(embedded )
load_breast_cancer
,load_diabetes
,load_digits
,load_iris
,load_linnerud
yload_wine
ahora soportan la carga como unDataFrame
de pandas estableciendoas_frame=True
. #15980 por @wconnell y Reshama Shaikh.Enhancement Se añadió el parámetro
return_centers
endatasets.make_blobs
, que puede utilizarse para devolver los centros de cada conglomerado. #15709 por @shivamgargsya y Venkatachalam N.Enhancement Las funciones
datasets.make_circles
ydatasets.make_moons
aceptan ahora tuplas de dos elementos. #15707 por Maciej J Mikulski.Fix
datasets.make_multilabel_classification
ahora generaValueError
para argumentosn_classes < 1
Olength < 1
. #16006 por Rushabh Vasani.API Change El
StreamHandler
fue eliminado desklearn.logger
para evitar el doble registro de mensajes en los casos comunes donde se conecta un manejador al registrador raíz, y para seguir la recomendación de la documentación de registro de Python para que las bibliotecas dejen el manejo de los mensajes de registro a los usuarios y al código de la aplicación. #16451 por Christoph Deil.
sklearn.decomposition
¶
Enhancement
decomposition.NMF
ydecomposition.non_negative_factorization
ahora preserva el dtype float32. #16280 por Jeremie du Boisberranger.Enhancement
TruncatedSVD.transform
es ahora más rápido en matrices dispersascsc
dadas. #16837 por @wornbb.Fix
decomposition.PCA
con un parámetro de punto flotante (float)n_components
, elegirá exclusivamente los componentes que expliquen la varianza mayor quen_components
. #15669 by Krishna ChaitanyaFix
decomposition.PCA
conn_components='mle'
ahora maneja correctamente los autovalores pequeños, y no infiere 0 como el número correcto de componentes. #16224 por Lisa Schwetlick, y Gelavizh Ahmadi y Marija Vlajic Wheeler y #16841 por Nicolas Hug.Fix El método
inverse_transform
dedecomposition.KernelPCA
ahora aplica la transformación inversa correcta a los datos transformados. #16655 por Lewis Ball.Fix Se corrigió el error que provocaba que
decomposition.KernelPCA
generara a veces uninvalid value encountered in multiply`(valor no válido encontrado en la multiplicación) durante `fit
. #16718 por Gui Miotto.Feature Añadido el atributo
n_components_
adecomposition.SparsePCA
ydecomposition.MiniBatchSparsePCA
. #16981 por Mateusz Górski.
sklearn.ensemble
¶
Major Feature
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
ahora soportan sample_weight. #14696 por Adrin Jalali y Nicolas Hug.Feature La parada anticipada en
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
se determina ahora con un nuevo parámetroearly_stopping
en lugar den_iter_no_change
. El valor por defecto es “auto”, que permite la parada anticipada si hay al menos 10.000 muestras en el conjunto de entrenamiento. #14516 by Johann Faouzi.Major Feature
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
ahora soportan restricciones monotónicas, útiles cuando las características se supone que tienen un efecto positivo/negativo en el objetivo. #15582 por Nicolas Hug.API Change Añadido el indicador booleano
verbose
a las clases:ensemble.VotingClassifier
yensemble.VotingRegressor
. #16069 por Sam Bail, Hanna Bruce MacDonald, Reshama Shaikh, y Chiara Marmo.API Change Se corrigió un error en
ensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
que no respetaba el parámetromax_leaf_nodes
si el criterio se alcanzaba al mismo tiempo que el criteriomax_depth
. #16183 por Nicolas Hug.Fix Se cambió la convención del parámetro
max_depth
deensemble.HistGradientBoostingClassifier
yensemble.HistGradientBoostingRegressor
. La profundidad corresponde ahora al número de aristas para ir desde la raíz hasta la hoja más profunda. Ahora se permiten los tocones (árboles con una división). #16182 by Santhosh BFix Se corrigió un error en
ensemble.BaggingClassifier
,ensemble.BaggingRegressor
yensemble.IsolationForest
donde el atributoestimators_samples_
no generaba los índices adecuados utilizados durantefit
. #16437 por Jin-Hwan CHO.Fix Se corrigió un error en
ensemble.StackingClassifier
yensemble.StackingRegressor
donde el argumentosample_weight
no se pasaba across_val_predict
cuando se evaluaban los estimadores base en pliegues de validación cruzada para obtener la entrada del metaestimador. #16539 por Bill DeRose.Feature Añadida la opción adicional
loss="poisson"
aensemble.HistGradientBoostingRegressor
, que añade la desviación de Poisson con enlace logarítmico útil para modelar datos de conteo. #16692 por Christian LorentzenFix Se corrigió un error por el que
ensemble.HistGradientBoostingRegressor
yensemble.HistGradientBoostingClassifier
fallaban con múltiples llamadas a fit cuandowarm_start=True
,early_stopping=True
, y no hay validación establecida. #16663 por Thomas Fan.
sklearn.feature_extraction
¶
Efficiency
feature_extraction.text.CountVectorizer
ahora ordena las características después de podarlas por frecuencia de documentos. Esto mejora el rendimiento en conjuntos de datos con grandes vocabularios combinados conmin_df
omax_df
. #15834 por Santiago M. Mola.
sklearn.feature_selection
¶
Enhancement Se añadió soporte para datos de salida múltiple en
feature_selection.RFE
yfeature_selection.RFECV
. #16103 por Divyaprabha M.API Change Añade
feature_selection.SelectorMixin
de vuelta a la API pública. #16132 por @trimeta.
sklearn.gaussian_process
¶
Enhancement
gaussian_process.kernels.Matern
devuelve el kernel RBF cuandonu=np.inf
. #15503 por Sam Dixon.Fix Se corrigió un error en
gaussian_process.GaussianProcessRegressor
que provocaba que las desviaciones estándar predichas solo estuvieran entre 0 y 1 cuando no se utilizaba WhiteKernel. #15782 por @plgreenLIRU.
sklearn.impute
¶
Enhancement
impute.IterativeImputer
acepta entradas escalares y array-like paramax_value
ymin_value
. Las entradas array-like permiten que se especifique un máximo y minuto diferente para cada característica. #16403 por Narendra Mukherjee.Enhancement
impute.SimpleImputer
,impute.KNNImputer
, yimpute.IterativeImputer
acepta el dtype entero anulable de pandas con valores faltantes. #16508 por Thomas Fan.
sklearn.inspection
¶
Feature
inspection.partial_dependence
yinspection.plot_partial_dependence
ahora soportan el método rápido de “recursion” paraensemble.RandomForestRegressor
ytree.DecisionTreeRegressor
. #15864 por Nicolas Hug.
sklearn.linear_model
¶
Major Feature Añadidos modelos lineales generalizados (GLM) con distribuciones de error no normales, incluyendo
linear_model.PoissonRegressor
,linear_model.GammaRegressor
ylinear_model. TweedieRegressor
que utilizan las distribuciones Poisson, Gamma y Tweedie respectivamente. #14300 por Christian Lorentzen, Roman Yurchak, y Olivier Grisel.Major Feature Soporte de
sample_weight
enlinear_model.ElasticNet
ylinear_model.Lasso
para la matriz densa de característicasX
. #15436 por Christian Lorentzen.Efficiency
linear_model.RidgeCV
ylinear_model.RidgeClassifierCV
ahora no asigna un arreglo potencialmente grande para almacenar coeficientes duales para todos los hiperparámetros durantefit
, ni un arreglo para almacenar todas las predicciones de error o LOO a menos questore_cv_values
seaTrue
. #15652 por Jérôme Dockès.Enhancement
linear_model.LassoLars
ylinear_model.Lars
ahora soportan un parámetrojitter
que añade ruido aleatorio al objetivo. Esto puede ayudar a la estabilidad en algunos casos extremos. #15179 por @angelaambroz.Fix Se corrigió un error donde si se pasaba un parámetro
sample_weight
al método fit delinear_model.RANSACRegressor
, no se pasaba albase_estimator
incluido durante el ajuste del modelo final. #15773 por Jeremy Alexandre.Fix Añadir el atributo
best_score_
alinear_model.RidgeCV
ylinear_model.RidgeClassifierCV
. #15655 por Jérôme Dockès.Fix Se corrigió un error en
linear_model.RidgeClassifierCV
para pasar una estrategia de puntuación específica. Antes de que el estimador interno diera la puntuación en lugar de las predicciones. #14848 por Venkatachalam N.Fix
linear_model.LogisticRegression
evitará ahora una iteración innecesaria cuandosolver='newton-cg'
comprobando si es inferior o igual en lugar de estrictamente inferior para el máximo deabsgrad
ytol
enutils.optimize._newton_cg
. #16266 por Rushabh Vasani.API Change Atributos públicos obsoletos
standard_coef_
,standard_intercept_
,average_coef_
, yaverage_intercept_
enlinear_model.SGDClassifier
,linear_model. SGDRegressor
,linear_model.PassiveAggressiveClassifier
,linear_model.PassiveAggressiveRegressor
. #16261 by Carlos Brandt.Fix Efficiency
linear_model.ARDRegression
es más estable y mucho más rápido cuandon_samples > n_features
. Ahora puede escalar a cientos de miles de muestras. La corrección de la estabilidad puede implicar cambios en el número de coeficientes distintos de cero y en la salida predicha. #16849 por Nicolas Hug.Fix Se corrigió un error en
linear_model.ElasticNetCV
,linear_model.MultiTaskElasticNetCV
,linear_model.LassoCV
ylinear_model.MultiTaskLassoCV
dondepor el que el ajuste fallaba cuando se utilizaba el backend loky de joblib. #14264 por Jérémie du Boisberranger.Efficiency Acelera
linear_model.MultiTaskLasso
,linear_model.MultiTaskLassoCV
,linear_model.MultiTaskElasticNet
,linear_model. MultiTaskElasticNetCV
evitando las lentas llamadas a BLAS Nivel 2 en arreglos pequeñas #17021 por Alex Gramfort y Mathurin Massias.
sklearn.metrics
¶
Enhancement
metrics.pairwise.pairwise_distances_chunked
permite ahora que sureduce_func
no tenga valor de retorno, permitiendo operaciones in place. #16397 por Joel Nothman.Fix Se corrigió un error en
metrics.mean_squared_error
para no ignorar el argumentosquared
cuando el argumentomultioutput='raw_values'
. #16323 por Rushabh VasaniFix Se corrigió un error en
metrics.mutual_info_score
donde se pudieron devolver puntuaciones negativas. #16362 por Thomas Fan.Fix Se corrigió un error en
metrics.confusion_matrix
que generaba un error cuandoy_true
yy_pred
tenían longitud cero ylabels
no eraNone
. Además, se produce un error cuando se da una lista vacía al parámetrolabels
. #16442 por Kyle Parsons.API Change Cambiado el formato de los valores en
metrics.ConfusionMatrixDisplay.plot
ymetrics.plot_confusion_matrix
para escoger el formato más corto (ya sea “2g” o “d”). #16159 por Rick Mackenbach y Thomas Fan.API Change A partir de la versión 0.25,
metrics.pairwise.pairwise_distances
ya no calculará automáticamente el parámetroVI
para la distancia de Mahalanobis y el parámetroV
para la distancia seuclidean (distancia euclidiana estandarizada) si se pasaY
. El usuario deberá calcular este parámetro en los datos de entrenamiento de su elección y pasarlo apairwise_distances
. #16993 por Joel Nothman.
sklearn.model_selection
¶
Enhancement
model_selection.GridSearchCV
ymodel_selection.RandomizedSearchCV
produce información de rastreo de pila en los mensajes de advertencia de fallos de ajuste, además del tipo y los detalles emitidos previamente. #15622 por Gregory Morse.Fix
model_selection.cross_val_predict
soportamethod="predict_proba"
cuandoy=None
. #15918 por Luca Kubin.Fix
model_selection.fit_grid_point
está obsoleto en 0.23 y se eliminará en 0.25. #16401 por Arie Pratama Sutiono
sklearn.multioutput
¶
Feature
multioutput.MultiOutputRegressor.fit
ymultioutput.MultiOutputClassifier.fit
ahora pueden aceptarfit_params
para pasar al métodoestimator.fit
de cada paso. #15953 #15959 por Ke Huang.Enhancement
multioutput.RegressorChain
ahora soportafit_params
parabase_estimator
durantefit
. #16111 por Venkatachalam N.
sklearn.naive_bayes
¶
Fix Se muestra un mensaje de error correctamente formateado en
naive_bayes.CategoricalNB
cuando el número de características en la entrada difiere entrepredict
yfit
. #16090 por Madhura Jayaratne.
sklearn.neural_network
¶
Efficiency
neural_network.MLPClassifier
yneural_network.MLPRegressor
ha reducido la huella de memoria cuando se utilizan solucionadores estocásticos,'sgd'
o'adam'
, yshuffle=True
. #14075 por @meyer89.Fix Aumenta la estabilidad numérica de la función de pérdida logística en
neural_network.MLPClassifier
recortando las probabilidades. #16117 por Thomas Fan.
sklearn.inspection
¶
Enhancement
inspection.PartialDependenceDisplay
ahora expone las líneas de deciles como atributos para que se puedan ocultar o personalizar. #15785 por Nicolas Hug
sklearn.preprocessing
¶
Feature El argumento
drop
depreprocessing.OneHotEncoder
ahora aceptará el valor “if_binary” y eliminará la primera categoría de cada característica con dos categorías. #16245 por Rushabh Vasani.Enhancement El ndarray
drop_idx_
depreprocessing.OneHotEncoder
ahora puede contenerNone
, dondedrop_idx_[i] = None
significa que no se elimina ninguna categoría para el índicei
. #16585 por Chiara Marmo.Enhancement
preprocessing.MaxAbsScaler
,preprocessing.MinMaxScaler
,preprocessing.StandardScaler
,preprocessing.PowerTransformer
,preprocessing.QuantileTransformer
,preprocessing.RobustScaler
ahora soporta el dtype entero anulable de pandas con valores faltantes. #16508 por Thomas Fan.Efficiency
preprocessing.OneHotEncoder
es ahora más rápido en la transformación. #15762 por Thomas Fan.Fix Se corrigió un error en
preprocessing.StandardScaler
que calculaba incorrectamente las estadísticas al llamar apartial_fit
en entradas dispersas. #16466 por Guillaume Lemaitre.Fix Se corrigió un error en
preprocessing.Normalizer
con norm=”max”, que no tomaba el valor absoluto de los valores máximos antes de normalizar los vectores. #16632 por Maura Pintor y Battista Biggio.
sklearn.semi_supervised
¶
Fix
semi_supervised.LabelSpreading
ysemi_supervised.LabelPropagation
evita las advertencias de división por cero al normalizarlabel_distributions_
. #15946 por @ngshya.
sklearn.svm
¶
Fix Efficiency Mejora de los generadores de números aleatorios
libsvm
yliblinear
utilizados para seleccionar aleatoriamente las coordenadas en los algoritmos de descenso de coordenadas. Se utilizabarand()
dependiente de la plataforma C, que sólo es capaz de generar números hasta32767
en la plataforma Windows (ver esta entrada del blog) y además tiene una pobre potencia de aleatorización como sugiere esta presentación. Fue reemplazado con C++11mt19937
, un Mersenne Twister que genera correctamente números aleatorios de 31bits/63bits en todas las plataformas. Además, el crudo postprocesador «modulo» utilizado para obtener un número aleatorio en un intervalo acotado fue reemplazado por el método Lemire ajustado, como se sugiere en esta entrada del blog. Cualquier modelo que utilice el solucionadorsvm.libsvm
osvm.liblinear
, incluyendosvm.LinearSVC
,svm.LinearSVR
,svm.NuSVC
,svm.NuSVR
,svm.OneClassSVM
,svm.SVC
,svm.SVR
,linear_model.LogisticRegression
, está afectado. En particular, los usuarios pueden esperar una mejor convergencia cuando el número de muestras (LibSVM) o el número de características (LibLinear) es grande. #13511 by Sylvain Marié.Fix Arreglado el uso de kernels personalizados que no toman entradas flotantes como los kernels de cadena en
svm.SVC
ysvm.SVR
. Ten en cuenta que ahora se espera que los kernels personalizados validen su entrada cuando antes recibían arreglos numéricos válidos. #11296 por Alexandre Gramfort y Georgi Peev.API Change Los atributos
probA_
yprobB_
desvm.SVR
ysvm.OneClassSVM
ahora están obsoletos ya que no eran útiles. #15558 por Thomas Fan.
sklearn.tree
¶
Fix El parámetro
rotate
detree.plot_tree
no se utilizó y ha quedado obsoleto. #15806 por Chiara Marmo.Fix Corregido el soporte del arreglo de entrada float32 de sólo lectura en los métodos
predict
,decision_path
ypredict_proba
detree.DecisionTreeClassifier
,tree.ExtraTreeClassifier
yensemble.GradientBoostingClassifier
así como el métodopredict
detree.DecisionTreeRegressor
,tree.ExtraTreeRegressor
yensemble.GradientBoostingRegressor
. #16331 por Alexandre Batisse.
sklearn.utils
¶
Major Feature Los estimadores ahora pueden mostrarse con una representación html enriquecida. Esto se puede activar en los cuadernos de Jupyter estableciendo
display='diagram'
enset_config
. El html en bruto puede ser devuelto utilizandoutils.estimator_html_repr
. #14180 por Thomas Fan.Enhancement Mejora del mensaje de error en
utils.validation.column_or_1d
. #15926 por Loïc Estève.Enhancement añadida advertencia en
utils.check_array
para DataFrame disperso de pandas. #16021 por Rushabh Vasani.Enhancement
utils.check_array
ahora construye una matriz dispersa a partir de un DataFrame de pandas que contiene solo columnasSparseArray
. #16728 por Thomas Fan.Enhancement
utils.validation.check_array
soporta el tipo de dato entero anulable de pandas con valores faltantes cuandoforce_all_finite
se establece comoFalse
o'allow-nan'
en cuyo caso los datos se convierten a valores de punto flotante donde los valorespd.NA
son reemplazados pornp.nan
. Como consecuencia, todos los transformadoressklearn.preprocessing
que aceptan entradas numéricas con valores faltantes representados comonp.nan
ahora también aceptan ser suministrados directamente por dataframes de pandas con columnas de tipopd.Int*
opd.Uint*
que utilizanpd.NA
como marcador de valores faltantes. #16508 por Thomas Fan.API Change Pasar clases a
utils.estimator_checks.check_estimator
yutils.estimator_checks.parametrize_with_checks
está ahora obsoleto, y el soporte para las clases será eliminado en 0.24. Pase instancias en su lugar. #17032 por Nicolas Hug.API Change Se eliminó la utilidad privada
_safe_tags
enutils.estimator_checks
, por lo tanto todas las etiquetas deben obtenerse a través deestimator._get_tags()
. Ten en cuenta que los Mixins comoRegressorMixin
deben venir antes de las clases base en el MRO para que_get_tags()
funcione correctamente. #16950 por Nicolas Hug.Fix
utils.all_estimators
ahora sólo devuelve estimadores públicos. #15380 por Thomas Fan.
Varios¶
Major Feature Añade una representación HTML de los estimadores para ser mostrados en un cuaderno de jupyter o jupyter lab. Esta visualización se activa estableciendo la opción
display
ensklearn.set_config
. #14180 por Thomas Fan.Enhancement
scikit-learn
ahora funciona conmypy
sin errores. #16726 por Roman Yurchak.API Change La mayoría de los estimadores ahora cuentan con un atributo
n_features_in_
. Este atributo es igual al número de características pasadas al métodofit
. Ver SLEP010 para más detalles. #16112 por Nicolas Hug.API Change Los estimadores tienen ahora una etiqueta
requires_y
que es False por defecto excepto para los estimadores que heredan de~sklearn.base.RegressorMixin
o~sklearn.base.ClassifierMixin
. Esta etiqueta se utiliza para garantizar que se genere un mensaje de error adecuado cuando se esperaba y pero se pasó None. #16622 por Nicolas Hug.API Change La configuración por defecto
print_changed_only
se ha cambiado de False a True. Esto significa que elrepr
de los estimadores es ahora más conciso y sólo muestra los parámetros cuyo valor por defecto ha sido cambiado al imprimir un estimador. Puede restaurar el comportamiento anterior utilizandosklearn.set_config(print_changed_only=False)
. Además, ten en cuenta que siempre es posible inspeccionar rápidamente los parámetros de cualquier estimador utilizandoest.get_params(deep=False)
. #17061 por Nicolas Hug.
Colaboradores de código y documentación¶
Gracias a todos los que han contribuido al mantenimiento y la mejora del proyecto desde la versión 0.22, incluyendo:
Abbie Popa, Adrin Jalali, Aleksandra Kocot, Alexandre Batisse, Alexandre Gramfort, Alex Henrie, Alex Itkes, Alex Liang, alexshacked, Alonso Silva Allende, Ana Casado, Andreas Mueller, Angela Ambroz, Ankit810, Arie Pratama Sutiono, Arunav Konwar, Baptiste Maingret, Benjamin Beier Liu, bernie gray, Bharathi Srinivasan, Bharat Raghunathan, Bibhash Chandra Mitra, Brian Wignall, brigi, Brigitta Sipőcz, Carlos H Brandt, CastaChick, castor, cgsavard, Chiara Marmo, Chris Gregory, Christian Kastner, Christian Lorentzen, Corrie Bartelheimer, Daniël van Gelder, Daphne, David Breuer, david-cortes, dbauer9, Divyaprabha M, Edward Qian, Ekaterina Borovikova, ELNS, Emily Taylor, Erich Schubert, Eric Leung, Evgeni Chasnovski, Fabiana, Facundo Ferrín, Fan, Franziska Boenisch, Gael Varoquaux, Gaurav Sharma, Geoffrey Bolmier, Georgi Peev, gholdman1, Gonthier Nicolas, Gregory Morse, Gregory R. Lee, Guillaume Lemaitre, Gui Miotto, Hailey Nguyen, Hanmin Qin, Hao Chun Chang, HaoYin, Hélion du Mas des Bourboux, Himanshu Garg, Hirofumi Suzuki, huangk10, Hugo van Kemenade, Hye Sung Jung, indecisiveuser, inderjeet, J-A16, Jérémie du Boisberranger, Jin-Hwan CHO, JJmistry, Joel Nothman, Johann Faouzi, Jon Haitz Legarreta Gorroño, Juan Carlos Alfaro Jiménez, judithabk6, jumon, Kathryn Poole, Katrina Ni, Kesshi Jordan, Kevin Loftis, Kevin Markham, krishnachaitanya9, Lam Gia Thuan, Leland McInnes, Lisa Schwetlick, lkubin, Loic Esteve, lopusz, lrjball, lucgiffon, lucyleeow, Lucy Liu, Lukas Kemkes, Maciej J Mikulski, Madhura Jayaratne, Magda Zielinska, maikia, Mandy Gu, Manimaran, Manish Aradwad, Maren Westermann, Maria, Mariana Meireles, Marie Douriez, Marielle, Mateusz Górski, mathurinm, Matt Hall, Maura Pintor, mc4229, meyer89, m.fab, Michael Shoemaker, Michał Słapek, Mina Naghshhnejad, mo, Mohamed Maskani, Mojca Bertoncelj, narendramukherjee, ngshya, Nicholas Won, Nicolas Hug, nicolasservel, Niklas, @nkish, Noa Tamir, Oleksandr Pavlyk, olicairns, Oliver Urs Lenz, Olivier Grisel, parsons-kyle-89, Paula, Pete Green, Pierre Delanoue, pspachtholz, Pulkit Mehta, Qizhi Jiang, Quang Nguyen, rachelcjordan, raduspaimoc, Reshama Shaikh, Riccardo Folloni, Rick Mackenbach, Ritchie Ng, Roman Feldbauer, Roman Yurchak, Rory Hartong-Redden, Rüdiger Busche, Rushabh Vasani, Sambhav Kothari, Samesh Lakhotia, Samuel Duan, SanthoshBala18, Santiago M. Mola, Sarat Addepalli, scibol, Sebastian Kießling, SergioDSR, Sergul Aydore, Shiki-H, shivamgargsya, SHUBH CHATTERJEE, Siddharth Gupta, simonamaggio, smarie, Snowhite, stareh, Stephen Blystone, Stephen Marsh, Sunmi Yoon, SylvainLan, talgatomarov, tamirlan1, th0rwas, theoptips, Thomas J Fan, Thomas Li, Thomas Schmitt, Tim Nonner, Tim Vink, Tiphaine Viard, Tirth Patel, Titus Christian, Tom Dupré la Tour, trimeta, Vachan D A, Vandana Iyer, Venkatachalam N, waelbenamara, wconnell, wderose, wenliwyan, Windber, wornbb, Yu-Hang «Maxin» Tang