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. Invoca assert_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 es joblib.Memory, lo que significa que puede convertirse en una instancia de sklearn.utils.Memory (normalmente una cadena (str) que denota el cachedir) 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 objeto np.random.RandomState a partir de un parámetro random_state.

    • Si random_state es None `` o ``np.random, se devuelve un objeto RandomState inicializado aleatoriamente.

    • Si random_state es un número entero, se utiliza para sembrar un nuevo objeto RandomState.

    • Si random_state es un objeto RandomState, 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étodos transform, 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étodo fit 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 en extmath.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 en lars_path) Elimina un elemento de una factorización de Cholesky.

  • arrayfuncs.min_pos: (utilizado en sklearn.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 disperso

  • extmath.safe_sparse_dot: producto punto que manejará correctamente las entradas scipy.sparse. Si las entradas son densas, es equivalente a numpy.dot.

  • extmath.weighted_mode: una extensión de scipy.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 en shuffle, a continuación.

  • shuffle: Revuelve arreglos o matrices dispersas de forma consistente. Se utiliza en k_means.

Muestreo Aleatorio Eficiente

Rutinas Eficientes para Matrices Dispersas

El módulo de Cython sklearn.utils.sparsefuncs alberga extensiones compiladas para procesar eficientemente los datos de scipy.sparse.

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 de graph_shortest_path.

  • graph_shortest_path.graph_shortest_path: (utilizado en Isomap) 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 una scipy.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 crear n-paquetes de divisiones que llegan hasta n. Utilizado en dict_learning y k_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 en sklearn.covariance.graphical_lasso.