SVC#

class sklearn.svm.SVC(*, C=1.0, kernel='rbf', degree=3, gamma='scale', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape='ovr', break_ties=False, random_state=None)[源代码]#

C-支持载体分类。

The implementation is based on libsvm. The fit time scales at least quadratically with the number of samples and may be impractical beyond tens of thousands of samples. For large datasets consider using LinearSVC or SGDClassifier instead, possibly after a Nystroem transformer or other 核近似.

多类支持是根据一对一的方案处理的。

有关所提供的核函数的精确数学公式以及如何 gamma , coef0degree 相互影响,请参阅叙述性文档中的相应部分: 核函数 .

要了解如何调整CSV的超参数,请参阅以下示例: 嵌套与非嵌套交叉验证

阅读更多的 User Guide .

参数:
Cfloat,默认=1.0

正规化参数。正规化的强度与C成正比。必须严格积极。点球是l2点球的平方。如需直观地可视化调整规则化参数C的影响,请参阅 缩放SVCs的正规化参数 .

kernel{'linear','poly','rbf','sigmoid','precomputed'}或可调用, 默认值='rbf'

指定算法中使用的内核类型。如果没有给出,则将使用“rBF”。如果给出了一个可调用对象,它将用于从数据矩阵预计算核矩阵;该矩阵应该是形状数组 (n_samples, n_samples) .有关不同内核类型的直观可视化,请参阅 具有不同支持机核的地块分类边界 .

degreeint,默认=3

多项核函数(“poly”)的次数。必须是非负的。被所有其他内核忽视。

gamma请输入'scale','auto'}或float,default='scale'

“rbf”、“poly”和“sigmoid”的核系数。

  • 如果 gamma='scale' (默认)被传递,然后它使用1 /(n_features * X.var())作为gamma的值,

  • 如果是“自动”,则使用1 / n_features

  • 如果为浮动,则必须为非负数。

在 0.22 版本发生变更: 的默认值 gamma 从“自动”更改为“规模”。

coef0float,默认=0.0

核函数中的独立项。它仅在“多聚体”和“西格玛”中显着。

shrinking布尔,默认=True

是否使用收缩启发式。看到 User Guide .

probability布尔,默认=假

是否启用概率估计。必须在呼叫之前启用此功能 fit ,将减慢该方法的速度,因为它内部使用5倍交叉验证,并且 predict_proba 可能不符合 predict .阅读更多的 User Guide .

tol浮点数,默认值= 1 e-3

停止标准的容忍度。

cache_size浮动,默认=200

指定内核缓存的大小(以MB为单位)。

class_weightdict或“balanced”,默认=无

Set the parameter C of class i to class_weight[i]*C for SVC. If not given, all classes are supposed to have weight one. The "balanced" mode uses the values of y to automatically adjust weights inversely proportional to class frequencies in the input data as n_samples / (n_classes * np.bincount(y)).

verbose布尔,默认=假

启用详细输出。请注意,此设置利用了libsvm中的每进程运行时设置,如果启用该设置,则可能无法在多线程上下文中正常工作。

max_iterint,默认=-1

求解器内迭代的硬限制,或-1表示无限制。

decision_function_shape' vo ',',默认=' ovr '

是否像所有其他分类器一样返回形状(n_samples,n_classes)的一vs-rest(' ovr ')决策函数,或者返回具有形状(n_samples,n_classes *(n_classes - 1)/ 2)的libsvm的原始一vs-一(' vo ')决策函数。然而,请注意,在内部,一对一(“vo”)始终被用作多类策略来训练模型; ovr矩阵仅从vo矩阵构建。对于二进制分类,该参数将被忽略。

在 0.19 版本发生变更: decision_function_shape默认为“ovr”。

Added in version 0.17: decision_function_shape='ovr' 建议。

在 0.17 版本发生变更: 弃用 decision_function_shape='ovo' and None .

break_ties布尔,默认=假

如果属实, decision_function_shape='ovr' ,且班级数量> 2, predict 将根据信心值打破关系 decision_function ;否则返回绑定类中的第一个类。请注意,与简单的预测相比,打破平局的计算成本相对较高。看到 SV打破平局示例 作为其使用示例 decision_function_shape='ovr' .

Added in version 0.22.

random_stateint,RandomState实例或无,默认=无

控制伪随机数的生成,用于洗牌数据以进行概率估计。时忽略 probability 是假的。传递一个int值,以便在多个函数调用中获得可重复的输出。看到 Glossary .

属性:
class_weight_形状的nd数组(n_classes,)

每个类的参数C的乘数。根据 class_weight 参数.

classes_形状的nd数组(n_classes,)

班级标签。

coef_形状的nd数组(n_classes *(n_classes - 1)/ 2,n_features)

在以下情况下分配给要素的权重 kernel="linear" .

dual_coef_形状nd数组(n_classes-1,n_SV)

决策函数中支持载体的双重系数(请参阅 数学公式 ),乘以他们的目标。对于多类,所有1 vs 1分类器的系数。多类情况下系数的布局有些不平凡。看到 multi-class section of the User Guide 有关详细信息

fit_status_int

如果安装正确,则为0,否则为1(将发出警告)

intercept_形状的ndarray(n_classes *(n_classes - 1)/ 2,)

决策功能中的常数。

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

n_iter_形状的nd数组(n_classes *(n_classes - 1)// 2,)

优化例程为适应模型而运行的迭代次数。此属性的形状取决于优化的模型数量,而优化的模型数量又取决于类的数量。

Added in version 1.1.

support_形状nd数组(n_SV)

支持载体指数。

support_vectors_ndrow形状数组(n_SV,n_features)

支持载体。如果内核是预先计算的,则为空数组。

n_support_形状的nd数组(n_classes,),dype = int 32

每个类别的支持载体数量。

probA_形状的nd数组(n_classes *(n_classes - 1)/ 2)

Platt缩放中学习的参数 probability=True .

probB_形状的nd数组(n_classes *(n_classes - 1)/ 2)

Platt缩放中学习的参数 probability=True .

shape_fit_形状的int的多元组(n_dimensions_of_X,)

训练载体的数组维度 X .

参见

SVR

使用libsvm实现的回归支持向量机。

LinearSVC

用于使用liblinear实现分类的可扩展线性支持载体机。查看LinearSRC的“另请参阅”部分以了解更多比较元素。

引用

[1]

LIBSVM: A Library for Support Vector Machines <http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf> _

[2]

Platt, John (1999). "Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods" <https://citeseerx.ist.psu.edu/doc_view/pid/42e5ed832d4310ce4378c44d05570439df28a393> _

示例

>>> import numpy as np
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.svm import SVC
>>> clf = make_pipeline(StandardScaler(), SVC(gamma='auto'))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('svc', SVC(gamma='auto'))])
>>> print(clf.predict([[-0.8, -1]]))
[1]

有关SRC与其他分类器的比较,请参阅: sphx_glr_auto_examples_classification_plot_classification_probability.py .

decision_function(X)[源代码]#

Evaluate the decision function for the samples in X.

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

返回:
X形状的nd数组(n_samples,n_classes *(n_classes-1)/ 2)

返回模型中每个类的样本的决策函数。如果decision_function_shape =' ovr ',则形状为(n_samples,n_classes)。

注意到

如果decision_function_shape =' vo ',则函数值与样本X到分离超平面的距离成比例。如果需要确切的距离,请将函数值除以权重载体的规范 (coef_ ).另见 this question 了解详情。如果decision_function_shape ='ovr',则判定函数是卵判定函数的单调变换。

fit(X, y, sample_weight=None)[源代码]#

根据给定的训练数据对支持机模型进行匹配。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵} 或(n_samples,n_samples)

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。对于core =“precalled”,X的预期形状是(n_samples,n_samples)。

y形状类似阵列(n_samples,)

目标值(分类中的类别标签,回归中的真实数字)。

sample_weight形状类似数组(n_samples,),默认=无

每个样品的重量。根据样本重新调整C。更高的权重迫使分类器更加强调这些点。

返回:
self对象

拟合估计量。

注意到

如果X和y不是np.float64的C排序且连续数组,并且X不是scipy.sparse.csr_matrix,则可以复制X和/或y。

如果X是密集数组,那么其他方法将不支持稀疏矩阵作为输入。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

对X中的样本进行分类。

对于一级模型,返回+1或-1。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}或 (n_samples_test,n_samples_train)

对于core =“预先计算”,X的预期形状是(n_samples_Test,n_samples_train)。

返回:
y_pred形状的nd数组(n_samples,)

X中样本的类别标签。

predict_log_proba(X)[源代码]#

计算X中样本可能结果的log概率。

模型需要在训练时计算概率信息:与属性匹配 probability 设置为True。

参数:
X形状类似阵列(n_samples,n_features)或 (n_samples_test,n_samples_train)

对于core =“预先计算”,X的预期形状是(n_samples_Test,n_samples_train)。

返回:
T形状的nd数组(n_samples,n_classes)

返回模型中每个类别的样本的log概率。这些列按排序顺序对应于类,因为它们出现在属性中 classes_ .

注意到

概率模型是使用交叉验证创建的,因此结果可能与通过预测获得的结果略有不同。此外,它将在非常小的数据集上产生无意义的结果。

predict_proba(X)[源代码]#

计算X中样本可能结果的概率。

模型需要在训练时计算概率信息:与属性匹配 probability 设置为True。

参数:
X形状类似阵列(n_samples,n_features)

对于core =“预先计算”,X的预期形状是(n_samples_Test,n_samples_train)。

返回:
T形状的nd数组(n_samples,n_classes)

返回模型中每个类的样本的概率。这些列按排序顺序对应于类,因为它们出现在属性中 classes_ .

注意到

概率模型是使用交叉验证创建的,因此结果可能与通过预测获得的结果略有不同。此外,它将在非常小的数据集上产生无意义的结果。

score(X, y, sample_weight=None)[源代码]#

返回给定测试数据和标签的平均准确度。

在多标签分类中,这是子集准确度,这是一个苛刻的指标,因为您需要为每个样本正确预测每个标签集。

参数:
X形状类似阵列(n_samples,n_features)

测试样本。

y形状的类似阵列(n_samples,)或(n_samples,n_outputs)

真正的标签 X .

sample_weight形状类似数组(n_samples,),默认=无

样本重量。

返回:
score浮子

平均准确度 self.predict(X) w.r.t. y .

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SVC[源代码]#

请求元数据传递给 fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 fit 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 fit .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 fit .

返回:
self对象

更新的对象。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SVC[源代码]#

请求元数据传递给 score

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 score 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 score .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 score .

返回:
self对象

更新的对象。