Глоссарий общих терминов и элементов API#

Этот глоссарий надеется окончательно представить неявные и явные соглашения, применяемые в Scikit-learn и его API, предоставляя справочник для пользователей и участников. Он стремится описать концепции и либо детализировать соответствующий API, либо ссылаться на другие соответствующие части документации. Ссылаясь на записи глоссария из справочника API и руководства пользователя, мы можем минимизировать избыточность и непоследовательность.

Мы начинаем с перечисления общих концепций (и тех, которые не подошли в другие разделы), но более конкретные наборы связанных терминов перечислены ниже: API классов и типы оценщиков, Типы целей, Методы, Параметры, Атрибуты, Данные и свойства образцов.

Общие концепции#

1d#
1d массив#

Одномерный массив. Массив NumPy, чей .shape имеет длину 1. Вектор.

2d#
2d массив#

Двумерный массив. Массив NumPy, чей .shape имеет длину 2. Часто представляет матрицу.

API#

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

Конкретные интерфейсы, составляющие публичный API Scikit-learn, в значительной степени документированы в Справочник API. Однако мы менее формально считаем что-либо публичным API, если ни один из идентификаторов, необходимых для доступа к нему, не начинается с _. Мы обычно стараемся поддерживать Данило Байбак для всех объектов в публичном API.

Приватный API, включая функции, модули и методы, начинающиеся _ не гарантированы как стабильные.

array-like#

Наиболее распространенный формат данных для входные данные для оценщиков и функций Scikit-learn, array-like — это любой тип объекта, для которого numpy.asarray создаст массив соответствующей формы (обычно 1- или 2-мерный) соответствующего dtype (обычно числовой).

Это включает:

  • массив numpy

  • список чисел

  • список списков чисел длины k для некоторой фиксированной длины k

  • a pandas.DataFrame со всеми числовыми столбцами

  • числовой pandas.Series

Другие входные данные Array API, но см. Поддержка Array API (экспериментальная) для предпочтительного способа использования этих:

  • a PyTorch тензор на устройстве 'cpu'

  • a JAX массив

Исключает:

Обратите внимание, что вывод от оценщиков и функций scikit-learn (например, предсказаний) обычно должны быть массивами или разреженными матрицами, или списками таковых (как в многовариантном выводе tree.DecisionTreeClassifier’s predict_proba). Оценщик, где predict() возвращает список или pandas.Series недействителен.

атрибут#
атрибуты#

Мы в основном используем термин атрибут для обозначения того, как информация модели хранится в оценщике во время обучения. Любой публичный атрибут, хранящийся в экземпляре оценщика, должен начинаться с буквенного символа и заканчиваться одним подчёркиванием, если он установлен в fit или partial_fit. Это то, что документировано под оценщиком Атрибуты документация. Информация, хранящаяся в атрибутах, обычно либо: достаточная статистика, используемая для предсказания или преобразования; трансдуктивный выводы, такие как labels_ или embedding_; или диагностические данные, такие как feature_importances_. Общие атрибуты перечислены ниже.

Публичный атрибут может иметь то же имя, что и конструктор параметр, с _ добавлено. Это используется для хранения проверенной или оцененной версии ввода пользователя. Например, decomposition.PCA создаётся с n_components параметр. На основе этого, вместе с другими параметрами и данными, PCA оценивает атрибут n_components_.

Дополнительные приватные атрибуты, используемые в прогнозировании/преобразовании и т.д., также могут быть установлены при подгонке. Они начинаются с одного подчёркивания и не гарантируют стабильность для публичного доступа.

Публичный атрибут экземпляра оценщика, который не заканчивается подчеркиванием, должен быть сохраненным, неизмененным значением __init__ параметр с тем же именем. Из-за этой эквивалентности они документированы под Параметры документация.

обратная совместимость#

Мы обычно стараемся сохранять обратную совместимость (т.е. интерфейсы и поведение могут расширяться, но не изменяться или удаляться) от релиза к релизу, но есть некоторые исключения:

Только публичный API

Поведение объектов, доступных через частные идентификаторы (те, которые начинаются _) может произвольно изменяться между версиями.

Как задокументировано

Мы обычно предполагаем, что пользователи соблюдают документированные типы параметров и диапазоны. Если документация требует список, а пользователь предоставляет кортеж, мы не гарантируем согласованное поведение от версии к версии.

Deprecation

Поведение может измениться после устаревание период (обычно длиной в два релиза). Предупреждения выдаются с использованием Python's warnings модуль.

Именованные аргументы

Иногда мы можем предположить, что все необязательные параметры (кроме X и y) fit и аналогичные методы) передаются только как ключевые аргументы и могут быть переупорядочены позиционно.

Исправления ошибок и улучшения

Исправления ошибок и – реже – улучшения могут изменить поведение оценщиков, включая предсказания оценщика, обученного на тех же данных и random_state. Когда это происходит, мы стараемся чётко отметить это в журнале изменений.

Сериализация

Мы не гарантируем, что сериализация оценщика в одной версии позволит десериализовать его в эквивалентную модель в последующей версии. (Для оценщиков в пакете sklearn мы выдаем предупреждение при попытке такой десериализации, даже если она может случайно сработать.) См. Ограничения безопасности и поддерживаемости.

utils.estimator_checks.check_estimator

Мы предоставляем ограниченные гарантии обратной совместимости для проверок оценщиков: мы можем добавить дополнительные требования к оценщикам, тестируемым с помощью этой функции, обычно когда они неформально предполагались, но не были формально протестированы.

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

callable#

Функция, класс или объект, который реализует __call__ метод; что-либо, что возвращает True, когда аргумент callable().

категориальный признак#

Категориальная или номинальная признак это тот, который имеет конечный набор дискретных значений по всей совокупности данных. Обычно они представлены в виде столбцов целых чисел или строк. Строки будут отклонены большинством оценщиков scikit-learn, а целые числа будут рассматриваться как порядковые или счетные значения. Для использования с большинством оценщиков категориальные переменные должны быть закодированы методом one-hot. Примечательными исключениями являются модели на основе деревьев, такие как случайные леса и модели градиентного бустинга, которые часто работают лучше и быстрее с категориальными переменными, закодированными целыми числами. OrdinalEncoder помогает кодировать строковые категориальные признаки как порядковые целые числа, и OneHotEncoder можно использовать для one-hot кодирования категориальных признаков. См. также Кодирование категориальных признаков и categorical-encoding пакет для инструментов, связанных с кодированием категориальных признаков.

clone#
клонирован#

Чтобы скопировать экземпляр estimator и создать новый с идентичным параметры, но без какого-либо обученного атрибуты, используя clone.

Когда fit вызывается, мета-оценщик обычно клонирует экземпляр обернутого оценщика перед обучением клонированного экземпляра. (Исключения, по историческим причинам, включают Pipeline и FeatureUnion.)

Если оценщика random_state параметр является целым числом (или если оценщик не имеет random_state параметр), точный клон возвращается: клон и исходный оценщик дадут точно такие же результаты. В противном случае, статистический клон возвращается: клон может давать результаты, отличные от исходного оценщика. Более подробную информацию можно найти в Управление случайностью.

общие тесты#

Это относится к тестам, запускаемым почти для каждого класса оценщика в Scikit-learn, чтобы проверить их соответствие основным соглашениям API. Они доступны для внешнего использования через utils.estimator_checks.check_estimator или utils.estimator_checks.parametrize_with_checks, с большей частью реализации в sklearn/utils/estimator_checks.py.

Примечание: Некоторые исключения из общего режима тестирования в настоящее время жёстко закодированы в библиотеке, но мы надеемся заменить это маркировкой исключительного поведения оценщика с использованием семантических теги оценщика.

перекрестное обучение#
кросс-фиттинг#

Метод повторной выборки, который итеративно разделяет данные на взаимно исключающие подмножества для подгонки двух этапов. На первом этапе взаимно исключающие подмножества позволяют вычислять прогнозы или преобразования на данных, не виденных во время обучения. Вычисленные данные затем используются на втором этапе. Цель — избежать того, чтобы любая переобученность на первом этапе внесла смещение в распределение входных данных второго этапа. Примеры использования см. в: TargetEncoder, StackingClassifier, StackingRegressor и CalibratedClassifierCV.

кросс-валидация#
кросс-валидация#

Метод повторной выборки, который итеративно разделяет данные на взаимоисключающие подмножества 'обучения' и 'тестирования', чтобы производительность модели могла быть оценена на невидимых данных. Это экономит данные, избегая необходимости выделять 'валидационный' набор данных, и учитывает изменчивость, поскольку обычно выполняется несколько раундов перекрестной проверки. См. Руководство пользователя для получения дополнительной информации.

устаревание#

Мы используем устаревание, чтобы постепенно нарушать наше Данило Байбак гарантии, обычно для:

  • изменить значение параметра по умолчанию; или

  • удалить параметр, атрибут, метод, класс и т.д.

Обычно мы выдаем предупреждение, когда используется устаревший элемент, хотя могут быть ограничения. Например, мы выдаем предупреждение, когда кто-то устанавливает параметр, который устарел, но можем не выдавать при доступе к атрибуту этого параметра в экземпляре оценщика.

См. Руководство для участников.

размерность#

Может использоваться для обозначения количества features (т.е. n_features), или столбцы в двумерной матрице признаков. Размерности, однако, также используются для обозначения длины формы массива NumPy, различая одномерный массив и двумерную матрицу.

docstring#

Встроенная документация для модуля, класса, функции и т.д., обычно в коде как строка в начале определения объекта и доступная как __doc__ атрибут.

Мы стараемся придерживаться PEP257, и следуйте соглашения NumpyDoc.

двойное подчеркивание#
нотация с двойным подчеркиванием#

При указании имен параметров для вложенных оценщиков, __ может использоваться для разделения родителя и потомка в некоторых контекстах. Наиболее распространенное использование — при установке параметров через мета-оценщик с set_params и, следовательно, при указании сетки поиска в поиск параметров. См. параметр. Также используется в pipeline.Pipeline.fit для передачи свойства образца в fit методы оценщиков в конвейере.

dtype#
тип данных#

Массивы NumPy предполагают однородный тип данных по всему массиву, доступный в .dtype атрибут массива (или разреженной матрицы). Мы обычно предполагаем простые типы данных для данных scikit-learn: float или integer. Мы можем поддерживать типы данных object или string для массивов перед кодированием или векторизацией. Наши оценщики не работают со структурированными массивами, например.

Наша документация иногда может давать информацию о точности dtype, например np.int32, np.int64, и т.д. Когда точность указана, она относится к NumPy dtype. Если используется произвольная точность, документация будет ссылаться на dtype integer или floating. Обратите внимание, что в этом случае точность может зависеть от платформы. numeric dtype означает принятие обоих integer и floating.

Когда дело доходит до выбора между 64-битным типом данных (т.е. np.float64 и np.int64) и 32-битный тип данных (т.е. np.float32 и np.int32), это сводится к компромиссу между эффективностью и точностью. 64-битные типы обеспечивают более точные результаты благодаря меньшей ошибке с плавающей запятой, но требуют больше вычислительных ресурсов, что приводит к более медленным операциям и повышенному использованию памяти. В отличие от них, 32-битные типы обещают повышенную скорость операций и снижение потребления памяти, но вносят большую ошибку с плавающей запятой. Улучшения эффективности зависят от низкоуровневой оптимизации, такой как векторизация, одна инструкция множественная диспетчеризация (SIMD) или оптимизация кэша, но критически важна совместимость используемого алгоритма.

В частности, выбор точности должен учитывать, может ли используемый алгоритм эффективно использовать np.float32. Некоторые алгоритмы, особенно определённые методы минимизации, кодируются исключительно для np.float64, означая, что даже если np.float32 передается, это запускает автоматическое преобразование обратно в np.float64. Это не только сводит на нет предполагаемую вычислительную экономию, но и вводит дополнительные накладные расходы, делая операции с np.float32 неожиданно медленнее и требует больше памяти из-за этого дополнительного шага преобразования.

утиная типизация#

Мы пытаемся применить утиная типизация чтобы определить, как обрабатывать некоторые входные значения (например, проверять, является ли данный оценщик классификатором). То есть мы избегаем использования isinstance где возможно, и полагаться на наличие или отсутствие атрибутов для определения поведения объекта. При следовании этому подходу требуется некоторая тонкость:

  • Для некоторых оценщиков атрибут может быть доступен только после обученный. Например, мы не можем априори определить, если predict_proba доступен в поиске по сетке, где сетка включает чередование вероятностного и невероятностного предсказателя на последнем шаге конвейера. В следующем мы можем определить только, если clf является вероятностным после обучения на некоторых данных:

    >>> from sklearn.model_selection import GridSearchCV
    >>> from sklearn.linear_model import SGDClassifier
    >>> clf = GridSearchCV(SGDClassifier(),
    ...                    param_grid={'loss': ['log_loss', 'hinge']})
    

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

  • Проверка наличия атрибута (с использованием hasattr) обычно стоит столько же, сколько получение атрибута (getattr или точечная нотация). В некоторых случаях получение атрибута действительно может быть затратным (например, для некоторых реализаций feature_importances_, что может указывать на недостаток в дизайне API). Поэтому код, который делает hasattr с последующим getattr следует избегать; getattr внутри блока try-except предпочтительнее.

  • Для определения некоторых аспектов ожиданий оценщика или поддержки определенных функций мы используем теги оценщика вместо утиной типизации.

ранняя остановка#

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

экземпляр estimator#

Иногда мы используем эту терминологию, чтобы различать estimator класс из созданного экземпляра. Например, в следующем, cls является классом оценщика, в то время как est1 и est2 являются экземплярами:

cls = RandomForestClassifier
est1 = cls()
est2 = RandomForestClassifier()
примеры#

Мы стараемся приводить примеры базового использования для большинства функций и классов в API:

  • как doctests в их docstrings (т.е. внутри sklearn/ сам код библиотеки).

  • в качестве примеров в галерея примеров отображается (с использованием sphinx-gallery) из скриптов в examples/ directory, иллюстрирующие ключевые особенности или параметры estimator/function. Они также должны быть указаны в Руководстве пользователя.

  • иногда в Руководство пользователя (построен из doc/наряду с техническим описанием оценщика.

экспериментальный#

Экспериментальный инструмент уже доступен, но его публичный API, такой как значения параметров по умолчанию или обученные атрибуты, все еще может изменяться в будущих версиях без обычного устаревание политика предупреждений.

метрика оценки#
метрики оценки#

Метрики оценки дают меру того, насколько хорошо модель работает. Мы можем использовать этот термин специально для обозначения функций в metrics (игнорируя pairwise), в отличие от score метод и оценка API, используемый в перекрёстной проверке. См. Метрики и оценка: количественное измерение качества прогнозов.

Эти функции обычно принимают истинные значения (или исходные данные, где метрика оценивает кластеризацию без истинных значений) и предсказание, будь то вывод predict (y_pred), из predict_proba (y_proba), или произвольной функции оценки, включая decision_function (y_score). Имена функций обычно заканчиваются на _score если большее значение оценки указывает на лучшую модель, и _loss если меньший балл указывает на лучшую модель. Это разнообразие интерфейсов мотивирует API оценки.

Обратите внимание, что некоторые оценщики могут вычислять метрики, которые не включены в metrics и специфичны для конкретных оценщиков, в частности для правдоподобий моделей.

теги оценщика#

Теги оценщика описывают определённые возможности оценщика. Это позволяет некоторое поведение во время выполнения на основе проверки оценщика, но также позволяет тестировать каждый оценщик на соответствующие инвариантности, исключая другие общие тесты.

Некоторые аспекты тегов оценщиков в настоящее время определяются через утиная типизация методов, таких как predict_proba и через некоторые специальные атрибуты объектов оценщиков:

Для более подробной информации см. Теги оценщиков.

признак#
features#
вектор признаков#

В абстрактном смысле, признак - это функция (в математическом смысле), отображающая выбранный объект в числовую или категориальную величину. 'Признак' также обычно используется для обозначения этих величин, являющихся отдельными элементами вектора, представляющего образец. В матрице данных признаки представлены как столбцы: каждый столбец содержит результат применения функции признака к набору образцов.

В других контекстах признаки известны как атрибуты, предикторы, регрессоры или независимые переменные.

Почти все оценщики в scikit-learn предполагают, что признаки числовые, конечные и не пропущены, даже когда они имеют семантически различные области и распределения (категориальные, порядковые, счетные, вещественные, интервальные). См. также категориальный признак и пропущенные значения.

n_features указывает количество признаков в наборе данных.

обучение#

Вызов fit (или fit_transform, fit_predict, и т.д.) на оценщике.

обученный#

Состояние оценщика после обучение.

Не существует общепринятой процедуры проверки, подогнан ли оценщик. Однако оценщик, который не подогнан:

  • должен вызывать exceptions.NotFittedError когда метод прогнозирования (predict, преобразовать, и т.д.) вызывается. (utils.validation.check_is_fitted используется внутренне для этой цели.)

  • не должно быть никаких атрибуты начинающиеся с алфавитного символа и заканчивающиеся подчеркиванием. (Обратите внимание, что дескриптор для атрибута может все еще присутствовать в классе, но hasattr должен возвращать False)

функция#

Мы предоставляем специальные интерфейсы функций для многих алгоритмов, в то время как estimator классы предоставляют более согласованный интерфейс.

В частности, Scikit-learn может предоставить интерфейс функции, который обучает модель на некоторых данных и возвращает изученные параметры модели, как в linear_model.enet_path. Для транзитивных моделей это также возвращает вложение или метки кластеров, как в manifold.spectral_embedding или cluster.dbscan. Многие преобразователи предварительной обработки также предоставляют функциональный интерфейс, аналогичный вызову fit_transform, как в preprocessing.maxabs_scale. Пользователям следует быть осторожными, чтобы избежать утечка данных при использовании этих fit_transform-эквивалентные функции.

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

См. примеры.

гиперпараметр#
гиперпараметр#

См. параметр.

impute#
импутация#

Большинству алгоритмов машинного обучения требуется, чтобы их входные данные не содержали пропущенные значения, и не будут работать, если это требование нарушено. Алгоритмы, которые пытаются заполнить (или импутировать) пропущенные значения, называются алгоритмами импутации.

индексируемый#

An array-like, разреженная матрица, pandas DataFrame или последовательность (обычно список).

индукция#
индуктивный#

Индуктивный (в отличие от трансдуктивный) машинное обучение строит модель некоторых данных, которая затем может быть применена к новым экземплярам. Большинство оценщиков в Scikit-learn являются индуктивными, имея predict и/или преобразовать методы.

joblib#

Библиотека Python (https://joblib.readthedocs.io) используется в Scikit-learn для облегчения простого параллелизма и кэширования. Joblib ориентирован на эффективную работу с массивами numpy, например, через использование отображение в память. См. Параллелизм для получения дополнительной информации.

матрица индикаторов меток#
матрица индикаторов мультиметок#
многометочные индикаторные матрицы#

Формат, используемый для представления многометочных данных, где каждая строка двумерного массива или разреженной матрицы соответствует образцу, каждый столбец соответствует классу, и каждый элемент равен 1, если образец помечен классом, и 0, если нет.

утечка#
утечка данных#

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

Мы стремимся предоставлять интерфейсы (такие как pipeline и model_selection), которые защищают пользователя от утечки данных.

меммаппинг#
memory map#
отображение в память#

Стратегия эффективности памяти, которая хранит данные на диске, а не копирует их в основную память. Файлы отображения памяти могут быть созданы для массивов, которые можно читать, записывать или и то, и другое, используя numpy.memmap. При использовании joblib для распараллеливания операций в Scikit-learn, он может автоматически использовать memmap для больших массивов, чтобы уменьшить накладные расходы на дублирование памяти в многопроцессорной обработке.

пропущенные значения#

Большинство оценщиков Scikit-learn не работают с пропущенными значениями. Когда они работают (например, в impute.SimpleImputer), NaN является предпочтительным представлением пропущенных значений в массивах с плавающей точкой. Если массив имеет целочисленный тип данных, NaN не может быть представлен. По этой причине мы поддерживаем указание другого missing_values значение, когда импутация или обучение может выполняться в целочисленном пространстве. Непомеченные данные является особым случаем пропущенных значений в цель.

n_features#

Количество features.

n_outputs#

Количество выходные данные в цель.

n_samples#

Количество образцы.

n_targets#

Синоним для n_outputs.

повествовательная документация#
повествовательная документация#

Псевдоним для Руководство пользователя, т.е. документация, написанная на doc/modules/. В отличие от справочник API предоставленные через строки документации, Руководство пользователя стремится:

  • группировать инструменты, предоставляемые Scikit-learn, тематически или по принципу использования;

  • объяснить, почему кто-то будет использовать каждый конкретный инструмент, часто через сравнение;

  • предоставлять как интуитивные, так и технические описания инструментов;

  • предоставить или ссылаться на примеры использования ключевых особенностей инструмента.

np#

Сокращение для Numpy из-за стандартного оператора импорта:

import numpy as np
онлайн-обучение#

Где модель итеративно обновляется, получая каждую партию истинных значений targets вскоре после предсказаний на соответствующем пакете данных. По сути, модель должна быть пригодна для предсказания после каждого пакета. Смотрите partial_fit.

внеядерная обработка#

Стратегия эффективности, при которой не все данные хранятся в оперативной памяти одновременно, обычно путем обучения на пакетах данных. См. partial_fit.

выходные данные#

Отдельные скалярные/категориальные переменные на образец в цель. Например, в многометочной классификации каждый возможный метка соответствует бинарному выходу. Также называется responses, задачи или targets. См. многоклассовый многомерный вывод и непрерывный многомерный вывод.

пара#

Кортеж длины два.

параметр#
параметры#
параметр#
params#

Мы в основном используем параметр для обозначения аспектов оценщика, которые могут быть указаны при его создании. Например, max_depth и random_state являются параметрами RandomForestClassifier. Параметры конструктора оценщика хранятся без изменений как атрибуты экземпляра оценщика и обычно начинаются с буквенного символа и заканчиваются буквенно-цифровым символом. Параметры конструктора каждого оценщика описаны в документации оценщика.

Мы не используем параметры в статистическом смысле, где параметры - это значения, которые определяют модель и могут быть оценены по данным. То, что мы называем параметрами, может быть тем, что статистики называют гиперпараметрами модели: аспекты для настройки структуры модели, которые часто не изучаются непосредственно из данных. Однако наши параметры также используются для предписания операций моделирования, которые не влияют на изученную модель, таких как n_jobs для управления параллелизмом.

При обсуждении параметров мета-оценщик, мы также можем включать параметры оценщиков, обернутых мета-оценщиком. Обычно эти вложенные параметры обозначаются с помощью двойное подчеркивание (__) для разделения между оценщиком-как-параметром и его параметром. Таким образом clf = BaggingClassifier(estimator=DecisionTreeClassifier(max_depth=3)) имеет параметр deep estimator__max_depth со значением 3, доступная с помощью clf.estimator.max_depth или clf.get_params()['estimator__max_depth'].

Список параметров и их текущие значения можно получить из экземпляр estimator используя его get_params метод.

Между построением и обучением параметры могут быть изменены с помощью set_params. Чтобы включить это, параметры обычно не проверяются и не изменяются при создании оценщика или при установке каждого параметра. Проверка параметров выполняется, когда fit вызывается.

Общие параметры перечислены ниже.

попарная метрика#
попарные метрики#

В широком смысле, парная метрика определяет функцию для измерения сходства или различия между двумя образцами (каждый из которых обычно представлен как вектор признаков). В частности, мы предоставляем реализации метрик расстояния (а также некорректных метрик, таких как косинусное расстояние) через metrics.pairwise_distances, и функций ядра (ограниченного класса функций сходства) в metrics.pairwise.pairwise_kernels. Они могут вычислять попарные матрицы расстояний, которые симметричны и, следовательно, хранят данные избыточно.

Смотрите также precomputed и метрика.

Обратите внимание, что для большинства метрик расстояния мы полагаемся на реализации из scipy.spatial.distance, но может быть перереализовано для эффективности в нашем контексте. Параметр metrics.DistanceMetric интерфейс используется для реализации метрик расстояния для интеграции с эффективным поиском соседей.

pd#

Сокращённая запись для Pandas из-за стандартного оператора импорта:

import pandas as pd
precomputed#

Когда алгоритмы полагаются на попарные метрики, и может быть вычислен только на основе попарных метрик, мы часто позволяем пользователю указать, что X предоставлен уже в пространстве попарных (не)сходств, а не в пространстве признаков. То есть, когда передается в fit, это квадратная, симметричная матрица, где каждый вектор указывает (не)сходство с каждым образцом, и при передаче в методы предсказания/трансформации каждая строка соответствует тестовому образцу, а каждый столбец — обучающему образцу.

Использование предвычисленного X обычно указывается установкой metric, affinity или kernel параметр в строку ‘precomputed’. Если это так, то оценщик должен установить pairwise тег оценщика как True.

прямоугольная#

Данные, которые могут быть представлены в виде матрицы с образцы на первой оси и фиксированном, конечном наборе features на втором называется прямоугольным.

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

sample#
образцы#

Обычно мы используем этот термин как существительное для обозначения одного вектора признаков. В других местах выборка называется экземпляром, точкой данных или наблюдением. n_samples указывает количество образцов в наборе данных, являющееся количеством строк в массиве данных X. Обратите внимание, что это определение стандартно в машинном обучении и отличается от статистики, где оно означает набор индивидов или объектов, собранных или выбранных.

свойство sample#
свойства образца#

Свойство выборки — это данные для каждой выборки (например, массив длины n_samples), передаваемые методу оценщика или аналогичной функции, наряду с, но отдельно от features (X) и цель (y). Наиболее ярким примером является sample_weight; см. другие на Данные и свойства образцов.

Начиная с версии 0.19 у нас нет единого подхода к обработке свойств выборки и их маршрутизации в мета-оценщики, хотя fit_params параметр часто используется.

scikit-learn-contrib#

Площадка для публикации библиотек, совместимых с Scikit-learn, которые широко одобрены основными разработчиками и сообществом contrib, но не поддерживаются основной командой разработчиков. См. https://scikit-learn-contrib.github.io.

предложения по улучшению scikit-learn#
SLEP#
SLEPs#

Изменения в принципах API и изменения в зависимостях или поддерживаемых версиях происходят через SLEP и следует процессу принятия решений, описанному в Управление и принятие решений в Scikit-learn. Для всех голосов предложение должно быть опубликовано и обсуждено перед голосованием. Такое предложение должно быть консолидированным документом в форме «Предложения по улучшению Scikit-Learn» (SLEP), а не длительным обсуждением в issue. SLEP должен быть представлен как pull-request в предложения по улучшению используя Шаблон SLEP.

полу-контролируемое#
полуконтролируемое обучение#
полуконтролируемое#

Обучение, когда ожидаемый прогноз (метка или истинное значение) доступен только для некоторых образцов, предоставленных в качестве обучающих данных, когда обучение модели. Мы традиционно применяем метку -1 to неразмеченные образцы в полуконтролируемой классификации.

разреженная матрица#
разреженный граф#

Представление двумерных числовых данных, более эффективное по памяти, чем соответствующая плотная матрица numpy, где почти все элементы равны нулю. Мы используем scipy.sparse фреймворк, который предоставляет несколько базовых представлений разреженных данных, или форматы. Некоторые форматы более эффективны, чем другие, для конкретных задач, и когда конкретный формат предоставляет особые преимущества, мы стараемся документировать этот факт в описаниях параметров Scikit-learn.

Некоторые форматы разреженных матриц (в частности, CSR, CSC, COO и LIL) различают неявный и явный нули. Явные нули сохраняются (т.е. они занимают память в data массив) в структуре данных, в то время как неявные нули соответствуют каждому элементу, не определенному иначе в явном хранилище.

В Scikit-learn используются две семантики для разреженных матриц:

семантика матрицы

Разреженная матрица интерпретируется как массив, где неявные и явные нули интерпретируются как число 0. Это интерпретация, наиболее часто используемая, например, когда разреженные матрицы применяются для матриц признаков или матрицы индикаторов мультиметок.

семантика графа

Как и с scipy.sparse.csgraph, явные нули интерпретируются как число 0, но неявные нули указывают на замаскированное или отсутствующее значение, такое как отсутствие ребра между двумя вершинами графа, где явное значение указывает вес ребра. Эта интерпретация принята для представления связности в кластеризации, в представлениях ближайших окрестностей (например, neighbors.kneighbors_graph), и для предвычисленного представления расстояний, где требуются только расстояния в окрестности каждой точки.

При работе с разреженными матрицами мы предполагаем, что они разрежены по веской причине, и избегаем написания кода, который уплотняет предоставленную пользователем разреженную матрицу, вместо этого сохраняя разреженность или вызывая ошибку, если это невозможно (т.е. если оценщик не поддерживает / не может поддерживать разреженные матрицы).

без состояния#

Оценщик является stateless, если он не хранит никакой информации, полученной во время fit. Эта информация может быть либо параметрами, изученными во время fit или статистики, вычисленные из обучающих данных. Оцениватель не имеет состояния, если у него нет атрибуты кроме установленных в __init__. Вызов fit для этих оценщиков будет проверять только публичные атрибуты переданный в __init__.

обучение с учителем#
контролируемое обучение#

Обучение, где ожидаемый прогноз (метка или истинное значение) доступен для каждого образца, когда обучение модель, предоставленная как y. Это подход, принятый в классификатор или регрессор среди других оценщиков.

цель#
targets#

The зависимая переменная в обучение с учителемполуконтролируемое) обучение, передано как y к оценщику fit метод. Также известен как зависимая переменная, зависимая переменная, зависимая переменная, Сложность модели или метка. Scikit-learn работает с целевыми переменными, имеющими минимальную структуру: класс из конечного набора, конечное вещественное число, несколько классов или несколько чисел. См. Типы целей.

трансдукция#
трансдуктивный#

Трансдуктивный (в отличие от индуктивный) метод машинного обучения предназначен для моделирования конкретного набора данных, но не для применения этой модели к невиданным данным. Примеры включают manifold.TSNE, cluster.AgglomerativeClustering и neighbors.LocalOutlierFactor.

неразмеченные#
неразмеченные данные#

Образцы с неизвестной истинной меткой при обучении; эквивалентно, пропущенные значения в цель. Смотрите также полуконтролируемое и неконтролируемый learning.

неконтролируемый#
обучение без учителя#

Обучение, когда ожидаемый прогноз (метка или истинное значение) недоступен для каждого образца, обучение модель, как в кластеризаторы и детекторы выбросов. Необученные оценщики игнорируют любые y передано в fit.

API классов и типы оценщиков#

классификатор#
классификаторах#

A обучение с учителем (или полу-контролируемое) предиктора с конечным набором дискретных возможных выходных значений.

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

Классификаторы должны хранить classes_ атрибут после обучения, и наследуют от base.ClassifierMixin, который устанавливает их соответствующие теги оценщика корректно.

Классификатор можно отличить от других оценщиков с помощью is_classifier.

Классификатор должен реализовывать:

Также может быть уместно реализовать decision_function, predict_proba и predict_log_proba.

кластеризатор#
кластеризаторы#

A неконтролируемый предиктора с конечным набором дискретных выходных значений.

Кластеризатор обычно хранит labels_ после обучения и должен делать это, если он трансдуктивный.

Кластеризатор должен реализовывать:

оценщик плотности#

An неконтролируемый оценку функции плотности вероятности входных данных. Обычно используемые техники:

  • Оценка плотности ядра - использует функцию ядра, управляемую параметром bandwidth для представления плотности;

  • Гауссова смесь - использует смесь гауссовских моделей для представления плотности.

estimator#
оценщики#

Объект, который управляет оценкой и декодированием модели. Модель оценивается как детерминированная функция от:

Оцененная модель хранится в публичных и приватных атрибуты validation_score_

Оценщики должны предоставлять fit метод и должен предоставлять set_params и get_params, хотя они обычно предоставляются через наследование от base.BaseEstimator.

Основная функциональность некоторых оценщиков также может быть доступна как функция.

извлекатель признаков#
извлекатели признаков#

A преобразователь который принимает входные данные, где каждый образец не представлен как array-like объект фиксированной длины и производит array-like объект features для каждого образца (и, следовательно, двумерный массивоподобный объект для набора образцов). Другими словами, она (с потерями) преобразует нерегулярное представление данных в прямоугольная data.

Экстракторы признаков должны реализовывать как минимум:

мета-оценщик#
мета-оценщики#
метаоценщик#
метаоценщики#

An estimator который принимает другой оценщик в качестве параметра. Примеры включают pipeline.Pipeline, model_selection.GridSearchCV, feature_selection.SelectFromModel и ensemble.BaggingClassifier.

В мета-оценщике fit метод, любые содержащиеся в нем оценщики должны быть клонирован перед их обучением.

Исключением из этого является то, что оценщик может явно документировать, что он принимает предварительно обученный оценщик (например, используя prefit=True в feature_selection.SelectFromModel). Одна известная проблема с этим заключается в том, что предварительно подобранный оценщик потеряет свою модель, если мета-оценщик клонируется. Мета-оценщик должен иметь fit вызывается перед предсказанием, даже если все содержащиеся модели предварительно обучены.

В случаях, когда основные поведения мета-оценщика (например, predict или преобразовать реализация) являются функциями методов предсказания/преобразования предоставленного базовый оценщик (или несколько базовых оценщиков), мета-оценщик должен предоставлять как минимум стандартные методы, предоставляемые базовым оценщиком. Может быть невозможно определить, какие методы предоставляются базовым оценщиком, пока мета-оценщик не был обученный (см. также утиная типизация), для которого utils.metaestimators.available_if может помочь. Он также должен предоставить (или изменить) теги оценщика и classes_ атрибут, предоставляемый базовым оценщиком.

Мета-оценщики должны быть осторожны при проверке данных, минимизируя её перед передачей базовому оценщику. Это экономит время вычислений и может, например, позволить базовому оценщику легко работать с данными, которые не прямоугольная.

детектор выбросов#
детекторы выбросов#

An неконтролируемый бинарный предиктора который моделирует различие между основными и выбросными образцами.

Детекторы выбросов должны реализовывать:

Индуктивные детекторы выбросов также могут реализовывать decision_function чтобы дать нормализованную оценку для нормальных точек, где выбросы имеют оценку ниже 0. score_samples может предоставить ненормализованную оценку на выборку.

предиктора#
предикторы#

An estimator поддерживая predict и/или fit_predict. Это включает классификатор, регрессор, детектор выбросов и кластеризатор.

В статистике “предикторы” относятся к features.

регрессор#
регрессоры#

A обучение с учителем (или полу-контролируемое) предиктора с непрерывный Выходные значения.

Регрессоры наследуются от base.RegressorMixin, который устанавливает их теги оценщика корректно.

Регрессор можно отличить от других оценщиков с помощью is_regressor.

Регрессор должен реализовывать:

преобразователь#
преобразователи#

Оценщик, поддерживающий преобразовать и/или fit_transform. Чисто трансдуктивный преобразователь, такой как manifold.TSNE, может не реализовывать transform.

векторизатор#
векторизаторы#

См. извлекатель признаков.

Существуют дополнительные API, специфичные для небольшого семейства оценщиков, таких как:

разделитель перекрестной проверки#
CV splitter#
генератор перекрестной проверки#

Не-оценочное семейство классов, используемое для разделения набора данных на последовательность обучающих и тестовых частей (см. Кросс-валидация: оценка производительности оценщика), предоставляя split и get_n_splits методов. Обратите внимание, что в отличие от оценщиков, они не имеют fit методы и не предоставляют set_params или get_params. Проверка параметров может выполняться в __init__.

оценщик перекрестной проверки#

Оценщик, который имеет встроенные возможности перекрестной проверки для автоматического выбора наилучших гиперпараметров (см. Руководство пользователя). Некоторые примеры оценщиков перекрестной проверки ElasticNetCV и LogisticRegressionCV. Оценщики перекрестной проверки называются EstimatorCV и имеют тенденцию быть примерно эквивалентными GridSearchCV(Estimator(), ...). Преимущество использования кросс-валидационного оценщика по сравнению с каноническим estimator класс вместе с grid search заключается в том, что они могут использовать преимущества теплого старта, повторно используя предварительно вычисленные результаты на предыдущих шагах процесса перекрестной проверки. Это обычно приводит к ускорению. Исключением является RidgeCV класс, который может вместо этого выполнять эффективную перекрёстную проверку Leave-One-Out (LOO). По умолчанию все эти оцениватели, кроме RidgeCV с LOO-CV, будет переобучен на полном обучающем наборе данных после нахождения лучшей комбинации гиперпараметров.

scorer#

Неоценочный вызываемый объект, который оценивает оценщик на заданных тестовых данных, возвращая число. В отличие от метрики оценки, большее возвращаемое число должно соответствовать лучше оценка. См. Параметр scoring: определение правил оценки модели.

Дополнительные примеры:

Маршрутизация метаданных#

потребитель#

Объект, который потребляет метаданные. Этот объект обычно является estimator, a scorer, или CV splitter. Использование метаданных означает их применение в вычислениях, например, использование sample_weight для вычисления определённого типа оценки. Быть потребителем не означает, что объект всегда получает определённые метаданные, скорее это означает, что он может использовать их, если они предоставлены.

метаданные#

Данные, которые связаны с заданными X и y данные, но не являются непосредственно частью данных, например. sample_weight или группыи передается различным объектам и методам, например, в scorer или CV splitter.

маршрутизатор#

Объект, который направляет метаданные в потребители. Этот объект обычно представляет собой мета-оценщик, например, Pipeline или GridSearchCV. Некоторые маршрутизаторы также могут быть потребителями. Это происходит, например, когда мета-оценщик использует заданный группы, и он также передает его некоторым своим под-объектам, таким как CV splitter.

Пожалуйста, обратитесь к Руководство по маршрутизации метаданных для получения дополнительной информации.

Типы целей#

бинарный#

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

Семантически один класс часто считается "положительным" классом. Если не указано иное (например, с помощью pos_label в метрики оценки), мы рассматриваем метку класса с большим значением (численно или лексикографически) как положительный класс: из меток [0, 1], 1 — положительный класс; из [1, 2], 2 — положительный класс; из ['no', 'yes'], 'yes' — положительный класс; из ['no', 'YES'], 'no' — положительный класс. Это влияет на вывод decision_function, например.

Обратите внимание, что набор данных, выбранный из многоклассового y или непрерывный y в матрицу данных патчей.

type_of_target вернет 'binary' для бинарного ввода или аналогичный массив только с одним присутствующим классом.

непрерывный#

Задача регрессии, где целевое значение каждого образца является конечным числом с плавающей запятой, представленным в виде 1-мерного массива чисел с плавающей запятой (или иногда целых чисел).

type_of_target вернет 'continuous' для непрерывного ввода, но если данные все целые числа, они будут идентифицированы как 'multiclass'.

непрерывный многомерный вывод#
непрерывный многомерный выход#
многомерный непрерывный#
многомерный непрерывный вывод#

Задача регрессии, где целевая переменная каждого образца состоит из n_outputs выходные данные, каждый из которых является конечным числом с плавающей точкой, для фиксированного целого числа n_outputs > 1 в конкретном наборе данных.

Непрерывные многомерные целевые переменные представлены как несколько непрерывный целей, горизонтально объединенных в массив формы (n_samples, n_outputs).

type_of_target вернет 'continuous-multioutput' для непрерывного многомерного вывода, но если данные все целочисленные, они будут идентифицированы как 'multiclass-multioutput'.

многоклассовый#
многоклассовый#

Задача классификации, состоящая из более чем двух классов. Многоклассовая цель может быть представлена как одномерный массив строк или целых чисел. 2d вектор-столбец целых чисел (т.е. один выход в multioutput термы) также принимается.

Мы официально не поддерживаем другие упорядочиваемые, хешируемые объекты как метки классов, даже если оценщики могут случайно работать при предоставлении целевых переменных классификации такого типа.

Для полуконтролируемой классификации, неразмеченные образцы должны иметь специальную метку -1 в y.

Внутри scikit-learn все оценщики, поддерживающие бинарную классификацию, также поддерживают многоклассовую классификацию, используя по умолчанию One-vs-Rest.

A preprocessing.LabelEncoder помогает канонизировать многоклассовые цели как целые числа.

type_of_target вернет 'multiclass' для многоклассового ввода. Пользователь также может захотеть обрабатывать 'binary' ввод идентично 'multiclass'.

многоклассовый многомерный вывод#
многоклассовый многомерный вывод#
многомерный многоклассовый#
многоклассовый многовариантный#

Задача классификации, где целевая переменная каждого образца состоит из n_outputs выходные данные, каждый метка класса, для фиксированного int n_outputs > 1 в конкретном наборе данных. Каждый выход имеет фиксированный набор доступных классов, и каждый образец помечен классом для каждого выхода. Выход может быть бинарным или многоклассовым, и в случае, когда все выходы бинарные, цель является многометочный.

Многоклассовые многоцелевые цели представлены как несколько многоклассовый целей, горизонтально объединенных в массив формы (n_samples, n_outputs).

Примечание: Для простоты мы не всегда поддерживаем строковые метки классов для многоклассового многовариантного вывода, и следует использовать целочисленные метки классов.

multioutput предоставляет оценщики, которые решают задачи с несколькими выходами, используя несколько оценщиков с одним выходом. Это может не полностью учитывать зависимости между различными выходами, что могут лучше делать методы, изначально поддерживающие случай с несколькими выходами (например, деревья решений, ближайшие соседи, нейронные сети).

type_of_target вернёт 'multiclass-multioutput' для многоклассового многоцелевого ввода.

многометочный#
многометочная классификация#

A многоклассовый многомерный вывод целевая переменная, где каждый выходной сигнал бинарный. Это может быть представлено как 2D (плотный) массив или разреженная матрица целых чисел, где каждый столбец является отдельной бинарной целью, с положительными метками, обозначенными 1, и отрицательными метками, обычно -1 или 0. Разреженные многометочные цели не поддерживаются везде, где поддерживаются плотные многометочные цели.

Семантически, многометочная цель может рассматриваться как набор меток для каждого образца. Хотя не используется внутренне, preprocessing.MultiLabelBinarizer предоставляется как утилита для преобразования из представления списка множеств в 2D-массив или разреженную матрицу. One-hot кодирование многоклассовой цели с preprocessing.LabelBinarizer превращает её в многометочную задачу.

type_of_target будет возвращать 'multilabel-indicator' для многометочного ввода, независимо от того, разреженный он или плотный.

multioutput#
многозадачный#

. DataFrame с многоклассовый многомерный вывод и непрерывный многомерный выход. В настоящее время мы не поддерживаем моделирование смешанных целей классификации и регрессии.

Методы#

decision_function#

В обученной классификатор или детектор выбросов, предсказывает «мягкую» оценку для каждого образца в отношении каждого класса, а не «жесткое» категориальное предсказание, создаваемое predict. Его входные данные обычно представляют собой только некоторые наблюдаемые данные, X.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

Соглашения по выводу:

бинарная классификация

Одномерный массив, где значения строго больше нуля указывают на положительный класс (т.е. последний класс в classes_).

многоклассовая классификация

Двумерный массив, где построчный arg-maximum - это предсказанный класс. Столбцы упорядочены согласно classes_.

многометочная классификация

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

  • Список 2D массивов, каждый массив формы: (n_samples, 2), как в многоклассовом многовариантном выводе. Список имеет длину n_labels.

  • Один 2d массив формы (n_samples, n_labels), где каждый 'столбец' в массиве соответствует отдельному бинарному решению классификации. Это идентично формату многоклассовой классификации, хотя его семантика отличается: его следует интерпретировать, как в бинарном случае, путём порогового значения 0.

многовариантная классификация

параметр, который должен передаваться в виде словаря в дополнение к ранее поддерживаемому формату array-like. Такой словарь имеет имена признаков в качестве ключей и один из

обнаружение выбросов

Одномерный массив, где значение больше или равное нулю указывает на выброс.

fit#

The fit метод предоставляется для каждого оценщика. Обычно он принимает некоторые образцы X, targets y если модель обучается с учителем, и потенциально другие свойства образца такие как sample_weight. Он должен:

  • очистить все предыдущие атрибуты хранится в оценщике, если только warm_start используется;

  • проверять и интерпретировать любой параметры, в идеале вызывая ошибку, если недействительно;

  • проверить входные данные;

  • оценить и сохранить атрибуты модели из оцененных параметров и предоставленных данных; и

  • возвращает теперь обученный оценщика для облегчения цепочки методов.

Типы целей описывает возможные форматы для y.

fit_predict#

Используется особенно для неконтролируемый, трансдуктивный estimators, this fits the model and returns the predictions (similar to predict) на обучающих данных. В кластеризаторах эти прогнозы также хранятся в labels_ атрибута и вывода .fit_predict(X) обычно эквивалентно .fit(X).predict(X). Параметры для fit_predict такие же, как и для fit.

fit_transform#

Метод на преобразователи который обучает оценщик и возвращает преобразованные обучающие данные. Принимает параметры как в fit и его вывод должен иметь ту же форму, что и вызов .fit(X, ...).transform(X). Тем не менее, существуют редкие случаи, когда .fit_transform(X, ...) и .fit(X, ...).transform(X) не возвращают одинаковое значение, когда обучающие данные нужно обрабатывать по-разному (из-за смешивания моделей в стекинговых ансамблях, например; такие случаи должны быть чётко задокументированы). Трансдуктивный преобразователи также могут предоставлять fit_transform но не преобразовать.

Одна из причин для реализации fit_transform заключается в том, что выполнение fit и transform отдельно было бы менее эффективно, чем вместе. base.TransformerMixin предоставляет реализацию по умолчанию, обеспечивая согласованный интерфейс для преобразователей, где fit_transform является или не является специализированным.

В индуктивный обучение – где цель состоит в изучении обобщенной модели, которую можно применять к новым данным – пользователи должны быть осторожны, чтобы не применять fit_transform ко всему набору данных (т.е. обучающим и тестовым данным вместе) перед дальнейшим моделированием, так как это приводит к утечка данных.

get_feature_names_out#

В основном для извлекатели признаков, но также используется для других преобразователей, чтобы предоставить строковые имена для каждого столбца в выходных данных оценщика преобразовать метод. Он выводит массив строк и может принимать массивоподобный объект строк в качестве ввода, соответствующий именам входных столбцов, из которых могут быть сгенерированы имена выходных столбцов. Если input_features Следующий график показывает распределение каждой переменной и попарные диаграммы рассеяния. Ключевым для нашей истории OVB является положительная связь между способностями и высшим образованием. feature_names_in_ атрибут будет использован. Если feature_names_in_ атрибут не определён, тогда входные имена называются [x0, x1, ..., x(n_features_in_ - 1)].

get_n_splits#

На CV splitter (не оценщик), возвращает количество элементов, которое можно получить при итерации через возвращаемое значение split при тех же параметрах. Принимает те же параметры, что и split.

get_params#

Получает все параметры, и их значения, которые можно установить с помощью set_params. Параметр deep может использоваться, когда установлено значение False, чтобы возвращать только те параметры, не включающие __, т.е. не из-за косвенности через вложенные оценщики.

Большинство оценщиков принимают определение из base.BaseEstimator, который просто принимает параметры, определённые для __init__. pipeline.Pipeline, среди прочего, перереализует get_params для объявления оценщиков, указанных в его steps параметры как сами параметры.

partial_fit#

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

partial_fit также может использоваться для внеядерная обработка обучение, хотя обычно ограниченное случаем, когда обучение может выполняться онлайн, т.е. модель пригодна к использованию после каждого partial_fit и нет отдельной обработки, необходимой для завершения модели. cluster.Birch вводит соглашение, что вызов partial_fit(X) создаст модель, которая не финализирована, но модель можно финализировать, вызвав partial_fit() т.е. без передачи дополнительной мини-пакеты.

Как правило, параметры оценщика не должны изменяться между вызовами partial_fitхотя partial_fit должны проверять их так же, как и новую мини-партию данных. В отличие от этого, warm_start используется для многократной подгонки одного и того же оценщика с одними и теми же данными, но с варьируемыми параметрами.

Как fit, partial_fit должен возвращать объект оценщика.

Чтобы очистить модель, следует создать новый оценщик, например, с base.clone.

Примечание: Использование partial_fit после fit приводит к неопределенному поведению.

predict#

Делает прогноз для каждого образца, обычно принимая только X как входные данные (но см. ниже в разделе соглашений о выходе регрессора). В классификатор или регрессорили y в подгонке состояли из этих строк). Несмотря на это, даже когда y передано в fit является списком или другим array-like, выходом predict должен всегда быть массивом или разреженной матрицей. В кластеризатор или детектор выбросов предсказание — целое число.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

Соглашения по выводу:

классификатор

Массив формы (n_samples,) (n_samples, n_outputs). Многометочная данные могут быть представлены в виде разреженной матрицы, если при обучении использовалась разреженная матрица. Каждый элемент должен быть одним из значений в classes_ атрибут.

кластеризатор

Массив формы (n_samples,) где каждое значение находится в диапазоне от 0 до n_clusters - 1 если соответствующий образец кластеризован, и -1, если образец не кластеризован, как в cluster.dbscan.

детектор выбросов

Массив формы (n_samples,) где каждое значение равно -1 для выброса и 1 в противном случае.

регрессор

Числовой массив формы (n_samples,), обычно float64. Некоторые регрессоры имеют дополнительные опции в своих predict метод, позволяя им возвращать стандартное отклонение (return_std=True) или ковариации (return_cov=True) относительно предсказанного значения. В этом случае возвращаемое значение представляет собой кортеж массивов, соответствующих (среднее предсказания, стандартное отклонение, ковариация) по мере необходимости.

predict_log_proba#

Натуральный логарифм выхода predict_proba, предоставлен для обеспечения численной устойчивости.

predict_proba#

Метод в классификаторах и кластеризаторы который может возвращать оценки вероятности для каждого класса/кластера. Его вход обычно только некоторые наблюдаемые данные, X.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

Соглашения вывода аналогичны таковым для decision_function кроме бинарный случай классификации, где один столбец выводится для каждого класса (в то время как decision_function выводит одномерный массив). Для бинарных и многоклассовых предсказаний каждая строка должна суммироваться до 1.

Как и другие методы, predict_proba должен присутствовать только тогда, когда оценщик может делать вероятностные прогнозы (см. утиная типизация). Это означает, что наличие метода может зависеть от параметров оценщика (например, в linear_model.SGDClassifier) или обучающие данные (например, в model_selection.GridSearchCV) и может появляться только после обучения.

score#

Метод оценивателя, обычно предиктора, который оценивает его предсказания на заданном наборе данных и возвращает одно числовое значение оценки. Большее возвращаемое значение должно указывать на лучшие предсказания; по умолчанию для классификаторов используется точность, а для регрессоров — R^2.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

Некоторые оценщики реализуют пользовательскую, специфичную для оценщика функцию оценки, часто правдоподобие данных в модели.

score_samples#

Метод, который возвращает оценку для каждой заданной выборки. Точное определение score варьируется от одного класса к другому. В случае оценки плотности это может быть модель логарифма плотности на данных, а в случае обнаружения выбросов - противоположность фактора выбросов данных.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

set_params#

Доступно в любом оценщике, принимает аргументы ключевых слов, соответствующие ключам в get_params. Каждому присваивается новое значение, такое, что вызов get_params после set_params будет отражать измененный параметры. Большинство оценщиков используют реализацию в base.BaseEstimator, который обрабатывает вложенные параметры и в противном случае устанавливает параметр как атрибут оценщика. Метод переопределен в pipeline.Pipeline и связанные с ним оцениватели.

split#

На CV splitter (не оценщик), этот метод принимает параметры (X, y, группы), где все могут быть необязательными, и возвращает итератор по (train_idx, test_idx) пары. Каждый из {train,test}_idx представляет собой одномерный целочисленный массив со значениями от 0 до X.shape[0] - 1 любой длины, так что никакие значения не появляются одновременно в некоторых train_idx и соответствующий test_idx.

transform#

В преобразователь, преобразует входные данные, обычно только X, в некоторое преобразованное пространство (обычно обозначаемое как Xt). Вывод представляет собой массив или разреженную матрицу длины n_samples и с фиксированным количеством столбцов после обучение.

Если оценщик еще не был обученный, вызов этого метода должен вызвать exceptions.NotFittedError.

Параметры#

Эти общие имена параметров, специально используемые при построении оценщиков (см. концепцию параметр), иногда также появляются как параметры функций или конструкторов не-оценок.

class_weight#

Используется для указания весов выборок при обучении классификаторов как функции от цель класс. Где sample_weight также поддерживается и задан, он умножается на class_weight вклад. Аналогично, где class_weight используется в multioutput (включая многометочный) задач, веса умножаются по выходам (т.е. столбцам y).

По умолчанию все выборки имеют одинаковый вес, так что классы эффективно взвешиваются по их распространенности в обучающих данных. Это можно явно достичь с помощью class_weight={label1: 1, label2: 1, ...} для всех меток классов.

Более общо, class_weight указывается как словарь, сопоставляющий метки классов с весами ({class_label: weight}), such that each sample of the named class is given that weight.

class_weight='balanced' может использоваться для придания всем классам равного веса путем присвоения каждому образцу веса, обратно пропорционального распространенности его класса в обучающих данных: n_samples / (n_classes * np.bincount(y)). Веса классов будут использоваться по-разному в зависимости от алгоритма: для линейных моделей (таких как линейный SVM или логистическая регрессия), веса классов изменят функцию потерь, взвешивая потерю каждого образца по его весу класса. Для алгоритмов на основе деревьев, веса классов будут использоваться для перевзвешивания критерия разделения. Примечание однако это перебалансирование не учитывает вес образцов в каждом классе.

Для многомерной классификации список словарей используется для указания весов для каждого выхода. Например, для четырехклассовой многометочной классификации веса должны быть [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] вместо [{1:1}, {2:5}, {3:1}, {4:1}].

The class_weight параметр проверяется и интерпретируется с помощью utils.class_weight.compute_class_weight.

cv#

Определяет стратегию разделения для перекрёстной проверки, используемую в процедурах на основе перекрёстной проверки. cv также доступен в оценщиках, таких как multioutput.ClassifierChain или calibration.CalibratedClassifierCV которые используют предсказания одного оценщика в качестве обучающих данных для другого, чтобы не переобучать обучающий надзор.

Возможные входные данные для cv обычно:

  • Целое число, указывающее количество фолдов в K-кратной перекрёстной валидации. K-кратная валидация будет стратифицирована по классам, если оценщик является классификатором (определяется по base.is_classifier) и targets может представлять бинарную или многоклассовую (но не многоцелевую) задачу классификации (определяется utils.multiclass.type_of_target).

  • A разделитель перекрестной проверки экземпляр. См. Руководство пользователя для разделителей, доступных в Scikit-learn.

  • Итерируемый объект, возвращающий разбиения на обучение/тест.

За некоторыми исключениями (особенно когда не использование кросс-валидации вообще является опцией), по умолчанию используется 5-кратная.

cv значения проверяются и интерпретируются с помощью model_selection.check_cv.

kernel#

Определяет функцию ядра, используемую алгоритмами Kernel Method. Например, оценщики svm.SVC и gaussian_process.GaussianProcessClassifier оба имеют kernel параметр, принимающий имя ядра для использования в виде строки или вызываемую функцию ядра, используемую для вычисления матрицы ядра. Для получения дополнительной информации см. Аппроксимация ядра и Гауссовские процессы руководства пользователя.

max_iter#

Для оценок, включающих итеративную оптимизацию, это определяет максимальное количество итераций, выполняемых в fit. Если max_iter итерации выполняются без сходимости, exceptions.ConvergenceWarning должно быть поднято. Обратите внимание, что интерпретация "одной итерации" не согласована между оценщиками: некоторые, но не все, используют её для обозначения одной эпохи (т.е. прохода по каждому образцу в данных).

memory#

Некоторые оценщики используют joblib.Memory для хранения частичных решений в процессе обучения. Таким образом, когда fit вызывается снова, эти частичные решения были запомнены и могут быть повторно использованы.

A memory параметр может быть указан как строка с путем к директории или joblib.Memory экземпляр (или объект с аналогичным интерфейсом, т.е. cache метод) может быть использован.

memory значения проверяются и интерпретируются с помощью utils.validation.check_memory.

metric#

В качестве параметра это схема определения расстояния между двумя точками данных. См. metrics.pairwise_distances. На практике, для некоторых алгоритмов может использоваться неправильная метрика расстояния (такая, которая не подчиняется неравенству треугольника, например, косинусное расстояние).

Примечание: Иерархическая кластеризация использует affinity с этим значением.

Мы также используем метрика для ссылки на метрики оценки, но избегайте использования этого смысла в качестве имени параметра.

n_components#

Количество признаков, которые преобразователь должен преобразовать входные данные. См. components_ для частного случая аффинной проекции.

n_iter_no_change#

Количество итераций без улучшения для ожидания перед остановкой итеративной процедуры. Это также известно как терпение параметр. Обычно используется с ранняя остановка чтобы избежать слишком ранней остановки.

n_jobs#

Этот параметр используется для указания, сколько параллельных процессов или потоков должно использоваться для процедур, распараллеленных с joblib.

n_jobs является целым числом, указывающим максимальное количество одновременно работающих процессов. Если задано 1, параллелизм joblib не используется вообще, что полезно для отладки. Если установлено -1, используются все процессоры. Для n_jobs ниже -1, используются (n_cpus + 1 + n_jobs). Например, с n_jobs=-2, используются все CPU, кроме одного.

n_jobs является None по умолчанию, что означает не установлено; обычно будет интерпретироваться как n_jobs=1, если только текущий joblib.Parallel контекст бэкенда не указывает иное.

Обратите внимание, что даже если n_jobs=1, низкоуровневый параллелизм (через Numpy и OpenMP) может использоваться в некоторых конфигурациях.

Для получения дополнительных сведений об использовании joblib и его взаимодействия с scikit-learn, пожалуйста, обратитесь к нашей заметки о параллелизме.

pos_label#

Значение, которым должны быть закодированы положительные метки в задачах бинарной классификации, где положительный класс не предполагается. Это значение обычно требуется для вычисления асимметричных метрик оценки, таких как точность и полнота.

random_state#

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

Переданное значение повлияет на воспроизводимость результатов, возвращаемых функцией (fit, split, или любая другая функция, такая как k_means). random_stateзначение может быть:

None (по умолчанию)

Используйте глобальный экземпляр случайного состояния из numpy.randomВызов функции несколько раз будет использовать один и тот же экземпляр и давать разные результаты.

Целое число

Использовать новый генератор случайных чисел, инициализированный заданным целым числом. Использование целого числа даст одинаковые результаты при разных вызовах. Однако может быть полезно проверить, что ваши результаты стабильны при нескольких различных случайных начальных значениях. Популярные целочисленные случайные начальные значения — 0 и 42. Целочисленные значения должны находиться в диапазоне [0, 2**32 - 1].

A numpy.random.RandomState экземпляр

Используйте предоставленное случайное состояние, влияя только на других пользователей того же экземпляра случайного состояния. Многократный вызов функции будет повторно использовать тот же экземпляр и давать разные результаты.

utils.check_random_state используется внутри для проверки ввода random_state и возвращает RandomState экземпляр.

Для получения дополнительных сведений о том, как управлять случайностью объектов scikit-learn и избегать распространенных ошибок, вы можете обратиться к Управление случайностью.

scoring#

В зависимости от объекта, можно указать:

  • функцию оценки, которую нужно максимизировать (обычно с помощью кросс-валидация),

  • несколько функций оценки для отчета,

  • функцию оценки, которая будет использоваться для проверки ранней остановки, или

  • для объектов, связанных с визуализацией, функция оценки для вывода или построения графика

Функция оценки может быть строкой, принимаемой в metrics.get_scorer или вызываемый объект scorer, не путать с метрика оценки, так как последние имеют более разнообразный API. scoring также может быть установлен в None, в этом случае оценщика score метод используется. См. Параметр scoring: определение правил оценки модели в руководстве пользователя.

Где можно оценить несколько метрик, scoring может быть задан либо как список уникальных строк, словарь с именами в качестве ключей и вызываемыми объектами в качестве значений, либо как вызываемый объект, возвращающий словарь. Обратите внимание, что это не не указать, какая функция оценки должна быть максимизирована, и другой параметр, такой как refit может использоваться для этой цели.

The scoring параметр проверяется и интерпретируется с помощью metrics.check_scoring.

verbose#

Ведение журнала в настоящее время не очень последовательно реализовано в Scikit-learn, но когда оно предоставляется как опция, verbose параметр обычно доступен для отключения логирования (установите в False). Любое значение True должно включать некоторое логирование, но большие целые числа (например, выше 10) могут быть необходимы для полной детализации. Подробные логи обычно выводятся в стандартный вывод. Оценщики не должны выводить ничего в стандартный вывод при значении по умолчанию verbose настройка.

warm_start#

При многократном обучении оценщика на одном и том же наборе данных, но для нескольких значений параметров (например, для поиска значения, максимизирующего производительность, как в grid search), может быть возможно повторно использовать аспекты модели, изученные из предыдущего значения параметра, экономя время. Когда warm_start истинно, существующий обученный модель атрибуты используются для инициализации новой модели в последующем вызове fit.

Обратите внимание, что это применимо только для некоторых моделей и некоторых параметров, и даже для некоторых порядков значений параметров. В целом, существует взаимодействие между warm_start и параметр, контролирующий количество итераций оценщика.

Для оценщиков, импортированных из ensemble, warm_start будет взаимодействовать с n_estimators или max_iter. Для этих моделей количество итераций, сообщаемое через len(estimators_) или n_iter_, соответствует общему количеству оценщиков/итераций, изученных с момента инициализации модели. Таким образом, если модель уже была инициализирована с N оценщики, и fit вызывается с n_estimators или max_iter установлено в M, модель будет обучаться M - N новые оценщики.

Другие модели, обычно использующие градиентные решатели, имеют другое поведение. Все они предоставляют max_iter параметр. Сообщенный n_iter_ соответствует количеству итераций, выполненных во время последнего вызова fit и будет не более max_iter. Таким образом, мы не учитываем состояние оценщика с момента инициализации.

partial_fit также сохраняет модель между вызовами, но отличается: с warm_start параметры изменяются, а данные (более или менее) постоянны при вызовах fit; с partial_fit, мини-пакет данных изменяется, а параметры модели остаются фиксированными.

Бывают случаи, когда вы хотите использовать warm_start для обучения на разных, но тесно связанных данных. Например, можно сначала обучить на подмножестве данных, а затем уточнить поиск параметров на полном наборе данных. Для классификации все данные в последовательности warm_start вызовы к fit должен включать образцы из каждого класса.

Атрибуты#

См. концепцию атрибут.

classes_#

Список меток классов, известных классификатор, сопоставляя каждую метку с числовым индексом, используемым в представлении модели или нашем выводе. Например, массив, выводимый из predict_proba имеет столбцы, выровненные с classes_. Для многозадачный классификаторы, classes_ должен быть списком списков, с одним перечислением классов для каждого выхода. Для каждого выхода классы должны быть отсортированы (численно или лексикографически для строк).

classes_ и сопоставление с индексами часто управляется с помощью preprocessing.LabelEncoder.

components_#

Матрица аффинного преобразования формы (n_components, n_features) используется во многих линейных преобразователи где n_components является количеством выходных признаков и n_features — это количество входных признаков.

Смотрите также coef_ который является аналогичным атрибутом для линейных предикторов.

coef_#

Матрица весов/коэффициентов обобщённой линейной модели предиктора, формы (n_features,) для бинарной классификации и регрессии с одним выходом, (n_classes, n_features) для многоклассовой классификации и (n_targets, n_features) для многомерной регрессии. Обратите внимание, что это не включает член intercept (или смещение), который хранится в intercept_.

Когда доступно, feature_importances_ обычно не предоставляется также, но может быть вычислена как норма каждой характеристики в coef_.

Смотрите также components_ который является аналогичным атрибутом для линейных преобразователей.

embedding_#

Вложение обучающих данных в обучение многообразий оценщики, с формой (n_samples, n_components), идентично выводу fit_transform. Смотрите также labels_.

n_iter_#

Количество итераций, фактически выполненных при обучении итеративного оценщика, который может остановиться при сходимости. См. также max_iter.

feature_importances_#

Вектор формы (n_features,) доступны в некоторых предикторы для предоставления относительной меры важности каждого признака в предсказаниях модели.

labels_#

Вектор, содержащий метку кластера для каждого образца обучающих данных в кластеризаторы, идентично выводу fit_predict. Смотрите также embedding_.

Данные и свойства образцов#

См. концепцию свойство sample.

groups#

Используется в процедурах перекрестной проверки для идентификации коррелированных образцов. Каждое значение является идентификатором, таким что, в поддерживающем CV splitter, образцы из некоторого groups значение может не появляться как в обучающем наборе, так и в соответствующем тестовом наборе. См. Итераторы перекрестной проверки для сгруппированных данных.

sample_weight#

Вес для каждой точки данных. Интуитивно, если все веса целые, их использование в оценщике или scorer эквивалентно дублированию каждой точки данных столько раз, сколько указано в значении веса. Веса также могут быть указаны как числа с плавающей точкой и иметь тот же эффект, что и выше, поскольку многие оценщики и скореры инвариантны к масштабу. Например, веса [1, 2, 3] будет эквивалентно весам [0.1, 0.2, 0.3] поскольку они отличаются на постоянный множитель 10. Однако обратите внимание, что несколько оценщиков не инвариантны к масштабу весов.

sample_weight может быть как аргументом оценщика fit метод для обучения модели или параметр scorer для оценки модели. Эти вызываемые объекты называются потреблять веса выборок в то время как другие компоненты scikit-learn могут маршрут весов к базовым оценщикам или скорерам (см. Маршрутизация метаданных).

Взвешивание выборок может быть полезно в нескольких контекстах. Например, если обучающие данные не равномерно выбраны из целевой популяции, это можно исправить, взвешивая точки обучающих данных на основе обратная вероятность их выбора для обучения (например, взвешивание по обратной склонности).

Некоторые гиперпараметры модели выражаются через дискретное количество точек данных в области пространства признаков. При обучении с весами образцов подсчет точек данных часто автоматически преобразуется в сумму их весов, но это не всегда так. Пожалуйста, обратитесь к документации модели для подробностей.

В классификации веса также могут быть указаны для всех образцов, принадлежащих данному целевому классу, с помощью class_weight estimator параметр. Если оба sample_weight и class_weight предоставлены, окончательный вес, присвоенный образцу, является произведением двух.

На момент написания (версия 1.8) не все оценщики scikit-learn корректно реализуют свойство эквивалентности весов-повторов. The #16298 мета-задача отслеживает текущую работу по обнаружению и исправлению оставшихся расхождений.

Кроме того, некоторые оценщики имеют стохастический метод fit. Например, cluster.KMeans зависит от случайной инициализации, модели бэггинга случайным образом перевыбирают данные из обучающей выборки и т.д. В этом случае свойство эквивалентности повторения весов выборки, описанное выше, не выполняется точно. Однако оно должно выполняться хотя бы в математическом ожидании относительно случайности процедуры обучения.

X#

Обозначает данные, которые наблюдаются во время обучения и предсказания, используются как независимые переменные в обучении. Обозначение заглавными буквами указывает, что обычно это матрица (см. прямоугольная). Когда матрица, каждый образец может быть представлен признак вектор или вектор precomputed (не)сходство с каждым обучающим образцом. X также может не быть матрицей и может требовать извлекатель признаков или попарная метрика чтобы превратить его в один перед обучением модели.

Xt#

Сокращение для "преобразованный X”.

y#
Y#

Обозначает данные, которые могут наблюдаться во время обучения как зависимая переменная в обучении, но которые недоступны во время предсказания и обычно являются цель прогноза. Обозначение может быть заглавным, чтобы указать, что это матрица, представляющая многозадачный цели, например; но обычно мы используем y и иногда делают это даже при предположении множественных выходов.