Utilidades para Desarrolladores¶
Scikit-learn contiene una serie de utilidades para ayudar al desarrollo. Éstas se encuentran en sklearn.utils
, e incluyen herramientas en varias categorías. Todas las siguientes funciones y clases están en el módulo sklearn.utils
.
Advertencia
Estas utilidades están destinadas a ser utilizadas internamente dentro del paquete scikit-learn. No se garantiza que sean estables entre versiones de scikit-learn. Los backports, en particular, se eliminarán a medida que las dependencias de scikit-learn evolucionen.
Herramientas de Validación¶
Se trata de herramientas utilizadas para comprobar y validar la entrada. Cuando se escribe una función que acepta arreglos, matrices o matrices dispersas como argumentos, se debe utilizar lo siguiente cuando sea aplicable.
assert_all_finite
: Lanza un error si el arreglo contiene NaNs o Infs.as_float_array
: convierte la entrada en un arreglo de números de punto flotante (float). Si se pasa una matriz dispersa, se devolverá una matriz dispersa.check_array
: comprueba que la entrada es un arreglo 2D, genera un error en matrices dispersas. Los formatos de matrices dispersas permitidos pueden darse opcionalmente, así como permitir arreglos 1D o N-dimensionales. Invocaassert_all_finite
por defecto.check_X_y
: comprueba que X e y tienen una longitud consistente, invoca a check_array en X y a column_or_1d en y. Para la clasificación multietiqueta o la regresión multiobjetivo, especifica multi_output=True, en cuyo caso se invocará a check_array en y.indexable
: comprueba que todos los arreglos de entrada tienen una longitud consistente y pueden ser divididos o indexados mediante safe_index. Esto se utiliza para validar la entrada para la validación cruzada.validation.check_memory
comprueba que la entrada esjoblib.Memory
, lo que significa que puede convertirse en una instancia desklearn.utils.Memory
(normalmente una cadena (str) que denota elcachedir
) o tiene la misma interfaz.
Si tu código depende de un generador de números aleatorios, nunca deberías utilizar funciones como numpy.random.random
o numpy. random.normal
. Este enfoque puede conducir a problemas de repetibilidad en las pruebas unitarias. En su lugar, debes utilizar un objeto numpy.random.RandomState
, que se construye a partir de un argumento random_state
pasado a la clase o función. La función check_random_state
, a continuación, se puede utilizar para crear un objeto generador de números aleatorio.
check_random_state
: crea un objetonp.random.RandomState
a partir de un parámetrorandom_state
.Si
random_state
esNone `` o ``np.random
, se devuelve un objetoRandomState
inicializado aleatoriamente.Si
random_state
es un número entero, se utiliza para sembrar un nuevo objetoRandomState
.Si
random_state
es un objetoRandomState
, entonces se pasa por él.
Por ejemplo:
>>> from sklearn.utils import check_random_state
>>> random_state = 0
>>> random_state = check_random_state(random_state)
>>> random_state.rand(4)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])
Cuando desarrolles tu propio estimador compatible con scikit-learn, los siguientes ayudantes (helpers) están disponibles.
validation.check_is_fitted
: comprueba que el estimador ha sido ajustado antes de invocar los métodostransform
,predict
o similares. Este ayudante (helper) permite lanzar un mensaje de error estandarizado a través del estimador.validation.has_fit_parameter
: comprueba que un parámetro dado es compatible con el métodofit
de un estimador dado.
Álgebra Lineal Eficiente y Operaciones de Arreglos¶
extmath.randomized_range_finder
: construye una matriz ortonormal cuyo rango se aproxima al rango de la entrada. Se utiliza enextmath.randomized_svd
, a continuación.extmath.randomized_svd
: calcula la SVD aleatoria k-truncada. Este algoritmo encuentra la descomposición en valores singulares exacta truncada utilizando la aleatorización para acelerar los cálculos. Es particularmente rápido en matrices grandes en las que se desea extraer sólo un pequeño número de componentes.arrayfuncs.cholesky_delete
: (utilizado enlars_path
) Elimina un elemento de una factorización de Cholesky.arrayfuncs.min_pos
: (utilizado ensklearn.linear_model.least_angle
) Encuentra el mínimo de los valores positivos dentro de un arreglo.extmath.fast_logdet
: calcula eficientemente el logaritmo del determinante de una matriz.extmath.density
: calcula de manera eficiente la densidad de un vector dispersoextmath.safe_sparse_dot
: producto punto que manejará correctamente las entradasscipy.sparse
. Si las entradas son densas, es equivalente anumpy.dot
.extmath.weighted_mode
: una extensión descipy.stats.mode
que permite que cada elemento tenga una ponderación de valor real.resample
: Remuestrea arreglos o matrices dispersas de forma consistente. Se utiliza enshuffle
, a continuación.shuffle
: Revuelve arreglos o matrices dispersas de forma consistente. Se utiliza enk_means
.
Muestreo Aleatorio Eficiente¶
random.sample_without_replacement
: implementa algoritmos eficientes para el muestreo den_samples
enteros de una población de tamañon_population
sin reemplazo.
Rutinas Eficientes para Matrices Dispersas¶
El módulo de Cython sklearn.utils.sparsefuncs
alberga extensiones compiladas para procesar eficientemente los datos de scipy.sparse
.
sparsefuncs.mean_variance_axis
: calcula las medias y varianzas a lo largo de un eje especificado de una matriz CSR. Se utiliza para normalizar el criterio de parada de la tolerancia enKMeans
.sparsefuncs_fast.inplace_csr_row_normalize_l1
ysparsefuncs_fast.inplace_csr_row_normalize_l2
: se pueden utilizar para normalizar muestras dispersas individuales a la norma unitaria L1 o L2 como se hace enNormalizer
.sparsefuncs.inplace_csr_column_scale
: puede utilizarse para multiplicar las columnas de una matriz CSR por una escala constante (una escala por columna). Se utiliza para escalar características a la desviación estándar unitaria enStandardScaler
.
Rutinas gráficas¶
graph.single_source_shortest_path_length
: (no se utiliza actualmente en scikit-learn) Devuelve el camino más corto desde una sola fuente a todos los nodos conectados en un grafo. El código está adaptado de networkx. Si alguna vez se necesita de nuevo, sería mucho más rápido utilizar una sola iteración del algoritmo de Dijkstra degraph_shortest_path
.graph_shortest_path.graph_shortest_path
: (utilizado enIsomap
) Devuelve el camino más corto entre todos los pares de puntos conectados en un grafo dirigido o no dirigido. Están disponibles tanto el algoritmo de Floyd-Warshall como el de Dijkstra. El algoritmo es más eficiente cuando la matriz de conectividad es unascipy.sparse.csr_matrix
.
Funciones de prueba¶
all_estimators
: devuelve una lista de todos los estimadores en scikit-learn para comprobar el comportamiento y las interfaces consistentes.
Función de utilidad multiclase y multietiqueta¶
multiclass.is_multilabel
: Función de ayuda (helper) para comprobar si la tarea es de clasificación multietiqueta.multiclass.unique_labels
: Función de ayuda (helper) para extraer un arreglo ordenado de etiquetas únicas de diferentes formatos de objetivo.
Funciones de Ayuda (Helper)¶
gen_even_slices
: generador para crearn
-paquetes de divisiones que llegan hastan
. Utilizado endict_learning
yk_means
.safe_mask
: Función de ayuda (helper) para convertir una máscara al formato esperado por el arreglo numpy o la matriz dispersa scipy en la que se va a utilizar (las matrices dispersas sólo admiten índices enteros mientras que los arreglos numpy admiten tanto máscaras booleanas como índices enteros).safe_sqr
: Función de ayuda (helper) para la cuadratura unificada (**2
) de array-likes, matrices y matrices dispersas.
Funciones Hash¶
murmurhash3_32
proporciona un envoltorio de python para la función hash no criptográfica de C++MurmurHash3_x86_32
. Esta función hash es adecuada para implementar tablas de búsqueda, filtros Bloom, Count Min Sketch, hash de características y proyecciones aleatorias dispersas definidas implícitamente:>>> from sklearn.utils import murmurhash3_32 >>> murmurhash3_32("some feature", seed=0) == -384616559 True >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737 True
El módulo
sklearn.utils.murmurhash
también puede ser «cimported» desde otros módulos de cython para beneficiarse del alto rendimiento de MurmurHash mientras se omite la sobrecarga del intérprete de Python.
Advertencias y Excepciones¶
deprecated
: Decorador para marcar una función o clase como obsoleta.ConvergenceWarning
: Advertencia personalizada para detectar problemas de convergencia. Utilizado ensklearn.covariance.graphical_lasso
.