Spec-Zone.ru › scikit-learn

Линейный классификатор SVC

классsklearn.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)[source]

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

Аналогична 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. Сочетание 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

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

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

feature_names_in_ndarray of shape (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 использует разреженное внутреннее представление данных, что приведёт к копированию памяти.

Выходное значение предсказания может не совпадать с результатами автономного 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)[source]

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

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

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

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

densify()[source]

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

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

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

Обученный оценочный объект.

fit(X, y, sample_weight=None)[source]

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

yмассив формы (n_samples,)

Вектор целевой переменной, относящийся к X.

sample_weightмассив формы (n_samples,), по умолчанию=None

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

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

Возвращает:
selfобъект

Экземпляр оценочного объекта.

get_metadata_routing()[source]

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

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

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

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

get_params(deep=True)[source]

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

Параметры:
deepbool, по умолчанию=True

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

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

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

predict(X)[source]

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

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_samples, n_features)

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

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

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

score(X, y, sample_weight=None)[source]

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

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

Параметры:
Xмассив формы (n_samples, n_features)

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

yмассив формы (n_samples,) или (n_samples, n_outputs)

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

sample_weightмассив формы (n_samples,), по умолчанию=None

Веса образцов.

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

Средняя точность self.predict(X) по отношению к y.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → LinearSVC[source]

Запрос метаданных, переданных методу fit.

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

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

  • True: метаданные запрашиваются и передаются в fit при их наличии. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в fit.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-оценщику с этим псевдонимом вместо исходного названия.

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

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

Примечание

Этот метод актуален только если данный оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не имеет эффекта.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

set_params(**params)[source]

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

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

Parameters:
**paramsdict

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

Returns:
selfestimator instance

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → LinearSVC[source]

Запрос метаданных, переданных методу score.

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

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

  • True: метаданные запрашиваются и передаются в score при их наличии. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в score.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-оценщику с этим псевдонимом вместо исходного названия.

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

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

Примечание

Этот метод актуален только если данный оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не имеет эффекта.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

sparsify()[source]

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

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

Член intercept_ не преобразуется.

Returns:
self

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

Примечания

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

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

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

Основные моменты выпуска scikit-learn 0.22

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

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

Конвейер ANOVA SVM

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

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

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

Баланс сложности модели и оценки по перекрёстной проверке

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

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

Преобразователь столбцов с разнородными источниками данных

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

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

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

Построение опорных векторов в LinearSVC

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

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

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

Spec-Zone.ru

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