Spec-Zone.ru › scikit-learn

LinearSVC

classsklearn.svm.LinearSVC(penalty='l2', loss='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 заключаются в используемой по умолчанию функции потерь и в обработке регуляризации свободного члена в этих двух реализациях.

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

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

Параметры:
penalty{‘l1’, ‘l2’}, default=’l2’

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

loss{‘hinge’, ‘squared_hinge’}, default=’squared_hinge’

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

dual“auto” or bool, default=”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: Параметр "auto" добавлен в версии 1.3 и станет значением по умолчанию в версии 1.5.

tolfloat, default=1e-4

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

Cfloat, default=1.0

Параметр регуляризации. Сила регуляризации обратно пропорциональна C. Значение должно быть строго положительным. Интуитивную визуализацию влияния масштабирования параметра регуляризации C см. в разделе Масштабирование параметра регуляризации для SVC.

multi_class{‘ovr’, ‘crammer_singer’}, default=’ovr’

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

fit_interceptbool, default=True

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

intercept_scalingfloat, default=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 or ‘balanced’, default=None

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

verboseint, default=0

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

random_stateint, RandomState instance or None, default=None

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

max_iterint, default=1000

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

Атрибуты:
coef_ndarray of shape (1, n_features) if n_classes == 2 else (n_classes, n_features)

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

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

intercept_ndarray of shape (1,) if n_classes == 2 else (n_classes,)

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

classes_ndarray of shape (n_classes,)

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

n_features_in_int

Число признаков, обнаруженных во время обучения.

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

feature_names_in_ndarray of shape (n_features_in_,)

Названия признаков, обнаруженных во время обучения. Определяется только в том случае, если X содержит названия признаков, представленные строками.

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

n_iter_int

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

См. также

SVC

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

sklearn.linear_model.SGDClassifier

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

Примечания

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

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

В некоторых случаях результат predict может не совпадать с результатом отдельной версии 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} of shape (n_samples, n_features)

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

Возвращает:
scoresndarray of shape (n_samples,) or (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} of shape (n_samples, n_features)

Обучающий вектор, где n_samples — число образцов, а n_features — число признаков.

yarray-like of shape (n_samples,)

Целевой вектор, соответствующий X.

sample_weightarray-like of shape (n_samples,), default=None

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

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

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

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

get_metadata_routing()[исходный код]

Возвращает маршрутизацию метаданных этого объекта.

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

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

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

Возвращает параметры этого оценивателя.

Параметры:
deepbool, default=True

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

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

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

predict(X)[исходный код]

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

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

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

Возвращает:
y_predndarray of shape (n_samples,)

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

score(X, y, sample_weight=None)[исходный код]

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

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

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

Тестовые образцы.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

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

sample_weightarray-like of shape (n_samples,), default=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, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[исходный код]

Задает параметры этого оценивателя.

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

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

Параметры оценивателя.

Возвращает:
selfestimator instance

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

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, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

sparsify()[исходный код]

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

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

Атрибут intercept_ не преобразуется.

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

Этот метод не поддерживается для оценивателей, обученных на входных данных Array API (то есть когда sklearn.config_context используется с array_api_dispatch=True). Вызов может завершиться успешно, но последующие вызовы predict и других методов, которым передаются массивы, могут вызвать ошибку или вернуть неожиданные результаты.

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

Обученный оцениватель.

Примечания

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

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

Примеры из галереи

Кривые калибровки вероятностей

Сравнение калибровки классификаторов

Column Transformer для разнородных источников данных

Выбор метода снижения размерности с помощью Pipeline и GridSearchCV

Одномерный отбор признаков

Конвейер ANOVA SVM

Масштабируемое обучение с приближением полиномиального ядра

Приближение явного отображения признаков для ядер RBF

Кривая компромисса между ошибками обнаружения (DET)

Точность и полнота

Дискретизация признаков

Основные возможности scikit-learn 0.22

Сравнение классификаторов SVM на наборе данных ирисов

Отображение опорных векторов в LinearSVC

Масштабирование параметра регуляризации для SVC

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

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.svm.LinearSVC.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API