LinearSVC#

класс sklearn.svm.LinearSVC(штраф='l2', потеря='squared_hinge', *, dual='auto', tol=0.0001, C=1.0, multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)[источник]#

Линейная классификация методом опорных векторов.

Аналогично SVC с параметром kernel='linear', но реализовано с использованием liblinear, а не libsvm, поэтому имеет большую гибкость в выборе штрафов и функций потерь и должен лучше масштабироваться на большое количество образцов.

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

Этот класс поддерживает как плотные, так и разреженные входные данные, а многоклассовая поддержка обрабатывается по схеме «один против остальных».

Подробнее в Руководство пользователя.

Параметры:
штраф{‘l1’, ‘l2’}, по умолчанию=’l2’

Определяет норму, используемую в штрафе. Штраф 'l2' является стандартным для SVC. Штраф 'l1' приводит к coef_ векторы, которые являются разреженными.

потеря{'hinge', 'squared_hinge'}, по умолчанию='squared_hinge'

Определяет функцию потерь. 'hinge' — стандартная потеря SVM (используется, например, классом SVC), а 'squared_hinge' — квадрат потери hinge. Комбинация penalty='l1' и loss='hinge' не поддерживается.

dual“auto” или bool, по умолчанию=”auto”

Выберите алгоритм для решения двойной или прямой задачи оптимизации. Предпочитайте dual=False, когда n_samples > n_features. dual="auto" автоматически выберет значение параметра на основе значений n_samples, n_features, loss, multi_class и penalty. Если n_samples < n_features и оптимизатор поддерживает выбранный loss, multi_class и penalty, тогда dual будет установлен в True, в противном случае он будет установлен в False.

Изменено в версии 1.3: The "auto" опция добавлена в версии 1.3 и будет использоваться по умолчанию в версии 1.5.

tolfloat, по умолчанию=1e-4

Допуск для критериев остановки.

Cfloat, по умолчанию=1.0

Параметр регуляризации. Сила регуляризации обратно пропорциональна C. Должна быть строго положительной. Для интуитивной визуализации эффектов масштабирования параметра регуляризации C см. Масштабирование параметра регуляризации для SVC.

multi_class{'ovr', 'crammer_singer'}, по умолчанию='ovr'

Определяет стратегию для многоклассовой классификации, если y содержит более двух классов. "ovr" обучает n_classes классификаторов один-против-всех, в то время как "crammer_singer" оптимизирует совместную цель по всем классам. В то время как crammer_singer интересен с теоретической точки зрения, так как он согласован, но редко используется на практике, так как редко приводит к лучшей точности и дороже в вычислении. Если "crammer_singer" выбран, параметры loss, penalty и dual будут проигнорированы.

fit_interceptbool, по умолчанию=True

Следует ли подгонять свободный член. Если установлено True, вектор признаков расширяется для включения свободного члена: [x_1, ..., x_n, 1], где 1 соответствует свободному члену. Если установлено в False, свободный член не будет использоваться в вычислениях (т.е. данные ожидаются уже центрированными).

intercept_scalingfloat, по умолчанию=1.0

Когда fit_intercept равно True, вектор экземпляра x становится [x_1, ..., x_n, intercept_scaling], т.е. «синтетический» признак с постоянным значением, равным intercept_scaling добавляется к вектору экземпляра. Перехват становится intercept_scaling * синтетический вес признака. Обратите внимание, что liblinear внутренне штрафует перехват, обращаясь с ним как с любым другим членом в векторе признаков. Чтобы уменьшить влияние регуляризации на перехват, intercept_scaling параметр может быть установлен в значение больше 1; чем выше значение intercept_scaling, тем меньше влияние регуляризации на него. Затем веса становятся [w_x_1, ..., w_x_n, w_intercept*intercept_scaling], где w_x_1, ..., w_x_n представляют веса признаков, а вес пересечения масштабируется на intercept_scaling. Это масштабирование позволяет члену пересечения иметь другое регуляризационное поведение по сравнению с другими признаками.

class_weightdict или 'balanced', по умолчанию=None

Установить параметр C класса i в class_weight[i]*C для SVC. Если не задано, предполагается, что все классы имеют вес один. Режим "balanced" использует значения y для автоматической настройки весов обратно пропорционально частотам классов во входных данных как n_samples / (n_classes * np.bincount(y)).

verboseint, по умолчанию=0

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

random_stateint, экземпляр RandomState или None, по умолчанию=None

Управляет псевдослучайной генерацией чисел для перемешивания данных при двойственном координатном спуске (если dual=True). Когда dual=False базовая реализация LinearSVC не является случайным и random_state не влияет на результаты. Передайте целое число для воспроизводимых результатов при многократных вызовах функции. См. Глоссарий.

max_iterint, по умолчанию=1000

Максимальное количество итераций для выполнения.

Атрибуты:
coef_ndarray формы (1, n_features), если n_classes == 2, иначе (n_classes, n_features)

Веса, присвоенные признакам (коэффициенты в прямой задаче).

coef_ является свойством только для чтения, производным от raw_coef_ который следует внутренней структуре памяти liblinear.

intercept_ndarray формы (1,) если n_classes == 2 иначе (n_classes,)

Константы в функции принятия решений.

classes_ndarray формы (n_classes,)

Уникальные метки классов.

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

Добавлено в версии 1.0.

n_iter_int

Максимальное количество итераций, выполняемых для всех классов.

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

SVC

Реализация классификатора метода опорных векторов с использованием libsvm: ядро может быть нелинейным, но его алгоритм SMO не масштабируется на большое количество выборок, как это делает LinearSVC. Кроме того, многоклассовый режим SVC реализован с использованием схемы один против одного, в то время как LinearSVC использует один против всех. Можно реализовать один против всех с SVC, используя OneVsRestClassifier обертка. Наконец, SVC может обучаться на плотных данных без копирования памяти, если входные данные C-непрерывны. Разреженные данные все равно приведут к копированию памяти.

sklearn.linear_model.SGDClassifier

SGDClassifier может оптимизировать ту же функцию стоимости, что и LinearSVC, путём настройки параметров штрафа и потерь. Кроме того, он требует меньше памяти, позволяет инкрементное (онлайн) обучение и реализует различные функции потерь и режимы регуляризации.

Примечания

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

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

Прогнозируемый вывод может не совпадать с выводом standalone liblinear в некоторых случаях. См. отличия от liblinear в повествовательной документации.

Ссылки

LIBLINEAR: Библиотека для крупномасштабной линейной классификации

Примеры

>>> from sklearn.svm import LinearSVC
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_features=4, random_state=0)
>>> clf = make_pipeline(StandardScaler(),
...                     LinearSVC(random_state=0, tol=1e-5))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('linearsvc', LinearSVC(random_state=0, tol=1e-05))])
>>> print(clf.named_steps['linearsvc'].coef_)
[[0.141   0.526 0.679 0.493]]
>>> print(clf.named_steps['linearsvc'].intercept_)
[0.1693]
>>> print(clf.predict([[0, 0, 0, 0]]))
[1]
decision_function(X)[источник]#

Предсказывает оценки уверенности для образцов.

Оценка уверенности для образца пропорциональна знаковому расстоянию от этого образца до гиперплоскости.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

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

Возвращает:
scoresndarray формы (n_samples,) или (n_samples, n_classes)

Оценки уверенности для каждого (n_samples, n_classes) комбинация. В двоичном случае оценка уверенности для self.classes_[1] где >0 означает, что этот класс будет предсказан.

densify()[источник]#

Преобразовать матрицу коэффициентов в плотный формат массива.

Преобразует coef_ преобразование (обратное) в numpy.ndarray. Это формат по умолчанию coef_ и требуется для обучения, поэтому вызов этого метода необходим только для моделей, которые ранее были разрежены; в противном случае это пустая операция.

Возвращает:
self

Обученный оценщик.

fit(X, y, sample_weight=None)[источник]#

Обучает модель на основе предоставленных обучающих данных.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Вектор обучения, где n_samples — это количество образцов и n_features это количество признаков.

yarray-like формы (n_samples,)

Целевой вектор относительно X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

Добавлено в версии 0.18.

Возвращает:
selfobject

Экземпляр оценивателя.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

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

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

predict(X)[источник]#

Предсказать метки классов для выборок в X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

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

Возвращает:
y_predndarray формы (n_samples,)

Вектор, содержащий метки классов для каждого образца.

score(X, y, sample_weight=None)[источник]#

Возвращает точность на предоставленных данных и метках.

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

Параметры:
Xarray-like формы (n_samples, n_features)

Тестовые выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок.

Возвращает:
scorefloat

Средняя точность self.predict(X) относительно y.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearSVC[источник]#

Настроить, следует ли запрашивать передачу метаданных в fit метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются fit если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в fit.

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

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для sample_weight параметр в fit.

Возвращает:
selfobject

Обновленный объект.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearSVC[источник]#

Настроить, следует ли запрашивать передачу метаданных в score метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются score если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в score.

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

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для sample_weight параметр в score.

Возвращает:
selfobject

Обновленный объект.

разрежать()[источник]#

Преобразовать матрицу коэффициентов в разреженный формат.

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

The intercept_ Член не преобразован.

Возвращает:
self

Обученный оценщик.

Примечания

Для неразреженных моделей, т.е. когда в coef_, это может фактически увеличить использование памяти, поэтому используйте этот метод с осторожностью. Эмпирическое правило: количество нулевых элементов, которое можно вычислить с помощью (coef_ == 0).sum(), должно быть больше 50%, чтобы это обеспечивало значительные преимущества.

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