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.
Примеры из галереи
© 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