Утилиты для разработчиков#

Scikit-learn содержит ряд утилит для помощи в разработке. Они расположены в sklearn.utils, и включают инструменты в несколько категорий. Все следующие функции и классы находятся в модуле sklearn.utils.

Предупреждение

Эти утилиты предназначены для внутреннего использования в пакете scikit-learn. Они не гарантируют стабильности между версиями scikit-learn. В частности, обратные порты будут удалены по мере развития зависимостей scikit-learn.

Инструменты валидации#

Это инструменты, используемые для проверки и валидации входных данных. Когда вы пишете функцию, которая принимает массивы, матрицы или разреженные матрицы в качестве аргументов, следует использовать следующие, когда это применимо.

  • assert_all_finite: Выдать ошибку, если массив содержит NaN или Inf.

  • as_float_array: преобразует входные данные в массив чисел с плавающей запятой. Если передана разреженная матрица, будет возвращена разреженная матрица.

  • check_array: проверка того, что входные данные представляют собой двумерный массив, вызов ошибки для разреженных матриц. Допустимые форматы разреженных матриц могут быть указаны опционально, а также разрешены одномерные или N-мерные массивы. Вызывает assert_all_finite по умолчанию.

  • check_X_y: проверяет, что X и y имеют согласованную длину, вызывает check_array для X и column_or_1d для y. Для многометочной классификации или многовариантной регрессии укажите multi_output=True, в этом случае check_array будет вызван для y.

  • indexable: проверка, что все входные массивы имеют согласованную длину и могут быть нарезаны или проиндексированы с помощью safe_index. Это используется для проверки входных данных для кросс-валидации.

  • validation.check_memory проверяет, что входные данные joblib.Memory-подобный, что означает, что его можно преобразовать в sklearn.utils.Memory экземпляр (обычно str, обозначающий cachedir) или имеет тот же интерфейс.

Если ваш код зависит от генератора случайных чисел, он никогда не должен использовать функции типа numpy.random.random или numpy.random.normal. Этот подход может привести к проблемам воспроизводимости в модульных тестах. Вместо этого numpy.random.RandomState объект должен использоваться, который строится из random_state аргумент, передаваемый классу или функции. Функция check_random_state, ниже, затем можно использовать для создания объекта генератора случайных чисел.

  • check_random_state: создать np.random.RandomState объект из параметра random_state.

    • Если random_state является None или np.random, затем случайно инициализированный RandomState возвращается объект.

    • Если random_state является целым числом, тогда оно используется для инициализации нового RandomState объект.

    • Если random_state является RandomState объект, затем он передается.

Например:

>>> 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])

При разработке собственного совместимого с scikit-learn оценщика доступны следующие вспомогательные средства.

  • validation.check_is_fitted: проверьте, что оценщик был обучен перед вызовом transform, predict, или аналогичных методов. Этот помощник позволяет вызывать стандартизированное сообщение об ошибке для оценщика.

  • validation.has_fit_parameter: проверить, что заданный параметр поддерживается в fit метод данного оценщика.

Эффективная линейная алгебра и операции с массивами#

  • extmath.randomized_range_finder: построить ортонормированную матрицу, чей диапазон аппроксимирует диапазон входных данных. Это используется в extmath.randomized_svd, ниже.

  • extmath.randomized_svd: вычисление усеченного рандомизированного SVD с k компонентами. Этот алгоритм находит точное усеченное разложение по сингулярным числам, используя рандомизацию для ускорения вычислений. Он особенно быстр на больших матрицах, из которых требуется извлечь только небольшое количество компонент.

  • arrayfuncs.cholesky_delete: (используется в lars_path) Удалить элемент из разложения Холецкого.

  • arrayfuncs.min_pos: (используется в sklearn.linear_model.least_angle) Найти минимум положительных значений в массиве.

  • extmath.fast_logdet: эффективно вычисляет логарифм определителя матрицы.

  • extmath.density: эффективное вычисление плотности разреженного вектора

  • extmath.safe_sparse_dot: скалярное произведение, которое будет корректно обрабатывать scipy.sparse входы. Если входы плотные, это эквивалентно numpy.dot.

  • extmath.weighted_mode: расширение scipy.stats.mode что позволяет каждому элементу иметь вещественный вес.

  • resample: Передискретизация массивов или разреженных матриц согласованным образом. используется в shuffle, ниже.

  • shuffle: Перемешивание массивов или разреженных матриц согласованным образом. Используется в k_means.

Эффективная случайная выборка#

  • random.sample_without_replacement: реализует эффективные алгоритмы для выборки n_samples целые числа из популяции размера n_population без возвращения.

Эффективные процедуры для разреженных матриц#

The sklearn.utils.sparsefuncs cython модуль содержит скомпилированные расширения для эффективной обработки scipy.sparse data.

  • sparsefuncs.mean_variance_axis: вычисляет средние значения и дисперсии вдоль указанной оси матрицы CSR. Используется для нормализации критерия остановки по допуску в KMeans.

  • sparsefuncs_fast.inplace_csr_row_normalize_l1 и sparsefuncs_fast.inplace_csr_row_normalize_l2: может использоваться для нормализации отдельных разреженных выборок к единичной норме L1 или L2, как в Normalizer.

  • sparsefuncs.inplace_csr_column_scale: может использоваться для умножения столбцов матрицы CSR на постоянный масштаб (один масштаб на столбец). Используется для масштабирования признаков к единичному стандартному отклонению в StandardScaler.

  • sort_graph_by_row_values: может использоваться для сортировки разреженной матрицы CSR так, чтобы каждая строка хранилась с возрастающими значениями. Это полезно для повышения эффективности при использовании предварительно вычисленных разреженных матриц расстояний в оценщиках, основанных на графе ближайших соседей.

Графовые процедуры#

  • graph.single_source_shortest_path_length: (в настоящее время не используется в scikit-learn) Возвращает кратчайший путь от одного источника ко всем связанным узлам на графе. Код адаптирован из networkx. Если это когда-либо снова понадобится, будет гораздо быстрее использовать одну итерацию алгоритма Дейкстры из graph_shortest_path.

Тестирующие функции#

  • discovery.all_estimators : возвращает список всех оценщиков в scikit-learn для проверки согласованного поведения и интерфейсов.

  • discovery.all_displays : возвращает список всех дисплеев (связанных с API построения графиков) в scikit-learn для проверки согласованного поведения и интерфейсов.

  • discovery.all_functions : возвращает список всех функций в scikit-learn для проверки согласованного поведения и интерфейсов.

Многоклассовая и многометочная служебная функция#

  • multiclass.is_multilabel: Вспомогательная функция для проверки, является ли задача многометочной классификацией.

  • multiclass.unique_labels: Вспомогательная функция для извлечения упорядоченного массива уникальных меток из различных форматов целевой переменной.

Вспомогательные функции#

  • gen_even_slices: генератор для создания n-пакеты срезов, идущие до n. Используется в dict_learning и k_means.

  • gen_batches: генератор для создания срезов, содержащих batch_size элементов от 0 до n

  • safe_mask: Вспомогательная функция для преобразования маски в формат, ожидаемый numpy array или scipy sparse matrix, на котором она будет использоваться (разреженные матрицы поддерживают только целочисленные индексы, в то время как numpy arrays поддерживают как булевы маски, так и целочисленные индексы).

  • safe_sqr: Вспомогательная функция для унифицированного возведения в квадрат (**2) из массивов, матриц и разреженных матриц.

Хеш-функции#

  • murmurhash3_32 предоставляет обертку Python для MurmurHash3_x86_32 C++ некриптографическая хеш-функция. Эта хеш-функция подходит для реализации таблиц поиска, фильтров Блума, Count Min Sketch, хеширования признаков и неявно определённых разреженных случайных проекций:

    >>> from sklearn.utils import murmurhash3_32
    >>> murmurhash3_32("some feature", seed=0) == -384616559
    True
    
    >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737
    True
    

    The sklearn.utils.murmurhash модуль также может быть "cimported" из других модулей Cython, чтобы воспользоваться преимуществами высокой производительности MurmurHash, пропуская накладные расходы интерпретатора Python.

Предупреждения и исключения#

  • deprecated: Декоратор для пометки функции или класса как устаревшего.

  • ConvergenceWarning: Пользовательское предупреждение для обнаружения проблем сходимости. Используется в sklearn.covariance.graphical_lasso.