Глоссарий общих терминов и элементов 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 (экспериментальная) для предпочтительного способа использования этих:
Исключает:
разреженный массив
итератора
генератор
Обратите внимание, что вывод от оценщиков и функций scikit-learn (например, предсказаний) обычно должны быть массивами или разреженными матрицами, или списками таковых (как в многовариантном выводе
tree.DecisionTreeClassifier’spredict_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. Если используется произвольная точность, документация будет ссылаться на dtypeintegerилиfloating. Обратите внимание, что в этом случае точность может зависеть от платформы.numericdtype означает принятие обоих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))имеет параметр deepestimator__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.
- полу-контролируемое#
- полуконтролируемое обучение#
- полуконтролируемое#
Обучение, когда ожидаемый прогноз (метка или истинное значение) доступен только для некоторых образцов, предоставленных в качестве обучающих данных, когда обучение модели. Мы традиционно применяем метку
-1to неразмеченные образцы в полуконтролируемой классификации.- разреженная матрица#
- разреженный граф#
Представление двумерных числовых данных, более эффективное по памяти, чем соответствующая плотная матрица 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#
- оценщики#
Объект, который управляет оценкой и декодированием модели. Модель оценивается как детерминированная функция от:
параметры предоставленные при создании объекта или с помощью set_params;
глобальный
numpy.randomслучайное состояние, если оценщика random_state параметр установлен в None; илюбые данные или свойства образца переданный в последний вызов fit, fit_transform или fit_predict, или данные, аналогично переданные в последовательности вызовов partial_fit.
Оцененная модель хранится в публичных и приватных атрибуты 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: определение правил оценки модели.
Дополнительные примеры:
tree.Criterion
Маршрутизация метаданных#
- потребитель#
Объект, который потребляет метаданные. Этот объект обычно является 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выходные данные, каждый метка класса, для фиксированного intn_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, targetsyесли модель обучается с учителем, и потенциально другие свойства образца такие как 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и иногда делают это даже при предположении множественных выходов.