Линейный классификатор 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.
Примеры из галереи
© 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