sklearn.svm.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支持向量分类。
该实现基于libsvm。拟合时间至少与样本数量成二次关系,如果样本数量超过数万个,拟合时间可能不现实。对于大数据集,可以考虑在使用了 sklearn.kernel_approximation.Nystroem
后,用 sklearn.svm.LinearSVC
或sklearn.linear_model.SGDClassifier
替代。
多类支持是根据one vs-one方案处理的。
关于提供的核函数的精确数学公式以及gamma
、coef0
和degree
如何相互影响的详细信息,请参阅叙述文档中的相应章节: Kernel functions。
更多信息请参阅 使用指南.
参数 | 说明 |
---|---|
C | 浮点数,默认= 1.0 正则化参数。正则化的强度与C成反比。必须严格为正。此惩罚系数是l2惩罚系数的平方 |
kernel | {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, 默认=’rbf’ 指定算法中使用的内核类型。它必须是“linear”,“poly”,“rbf”,“sigmoid”,“precomputed”或者“callable”中的一个。如果没有给出,将默认使用“rbf”。如果给定了一个可调用函数,则用它来预先计算核矩阵。该矩阵应为形状数组 (n_samples,n_samples) |
degree | 整数型,默认=3 多项式核函数的次数(' poly ')。将会被其他内核忽略。 |
gamma | 浮点数或者{‘scale’, ‘auto’} , 默认=’scale’ 核系数包含‘rbf’, ‘poly’ 和‘sigmoid’ 如果gamma='scale'(默认),则它使用1 / (n_features * X.var())作为gamma的值,如果是auto,则使用1 / n_features。 在0.22版本有改动:默认的gamma从“auto”改为“scale”。 |
coef0 | 浮点数,默认=0.0 核函数中的独立项。它只在' poly '和' sigmoid '中有意义。 |
shrinking | 布尔值,默认=True 是否使用缩小启发式,参见使用指南 |
probability | 布尔值,默认=False 是否启用概率估计。必须在调用fit之前启用此参数,因为该方法内部使用5折交叉验证,因此会减慢该方法的速度,并且predict_proba可能与dict不一致。更多信息请阅读使用指南 |
tol | 浮点数,默认=1e-3 残差收敛条件。 |
cache_size | 浮点数,默认=200 指定内核缓存的大小(以MB为单位)。 |
class_weight | {dict, ‘balanced’}, 默认=None 在SVC中,将类i的参数C设置为class_weight [i] * C。如果没有给出值,则所有类都将设置为单位权重。“balanced”模式使用y的值自动将权重与类频率成反比地调整为 n_samples / (n_classes * np.bincount(y)) |
verbose | 布尔值,默认=False 是否启用详细输出。请注意,此参数针对liblinear中运行每个进程时设置,如果启用,则可能无法在多线程上下文中正常工作。 |
max_iter | 整数型,默认=-1 对求解器内的迭代进行硬性限制,或者为-1(无限制时)。 |
decision_function_shape | {‘ovo’, ‘ovr’}, 默认=’ovr’ 是否要将返回形状为(n_samples, n_classes)的one-vs-rest (‘ovr’)决策函数应用于其他所有分类器,而在多类别划分中始终使用one-vs-one (‘ovo’),对于二进制分类,将忽略该参数。 在版本0.19中进行了更改:默认情况下Decision_function_shape为ovr。 0.17版中的新功能:推荐使用Decision_function_shape ='ovr'。 在0.17版中进行了更改:不建议使用Decision_function_shape ='ovo'和None。 |
break_ties | bool, default=False 如果为true,decision_function_shape ='ovr',并且类数> 2,则预测将根据Decision_function的置信度值打破平局;否则,返回绑定类中的第一类。请注意,与简单的预测相比,打破平局的计算成本较高。 这是0.22版中的新功能。 |
random_state | 整数型或RandomState的实例,默认=None 控制用于数据抽取时的伪随机数生成。当 probability 为False时将忽略该参数。在多个函数调用之间传递可重复输出的整数值。请参阅词汇表。 |
属性 | 说明 |
---|---|
support_ | 形如(n_SV,)的数组 支持向量的指标。 |
support_vectors_ | 形如(n_SV, n_features)的数组 支持向量 |
n_support_ | 形如(n_class)的数组,dtype=int32 每个类别的支持向量数量。 |
dual_coef_ | 形如(n_class-1, n_SV)的数组 决策函数中支持向量的对偶系数(请参见数学公式)。对于多类别,为所有1-vs-1分类器的系数。在多类情况下,系数的布局有些微不足道。有关详细信息,请参见multi-class section of the User Guide。 |
coef_ | 形如(n_class * (n_class-1) / 2, n_features)的数组 分配给特征的权重(原始问题的系数),仅在线性内核的情况下可用。 coef_ 是一个继承自raw_coef_ 的只读属性,它遵循liblinear的内部存储器布局。 |
intercept_ | 形如(n_class * (n_class-1) / 2,)的数组 决策函数中的常量。 |
fit_status_ | 整数型 如果拟合无误,则为0;如果算法未收敛,则为1。 |
classes_ | 形如(n_classes,)的数组 不重复类别标签 |
probA_ | 形如(n_class * (n_class-1) / 2,)的数组 |
probB_ | 形如(n_class * (n_class-1) / 2,)的数组 如果 probability=True ,则它对应于在普拉特缩放中学习的参数,以根据决策值产生概率估计。如果probability=False ,则为空数组。普拉特定标使用逻辑函数1 /(1 + exp(decision_value * probA_ + probB_)) ,其中从数据集[2]了解probA_ 和probB_ 。有关多类案件和培训程序的更多信息,请参见[1]的第8节。 |
class_weight_ | 形如(n_class,)的数组 每个类的参数C的乘数。根据 class_weight 参数进行计算。 |
shape_fit_ | 形如(n_dimensions_of_X,)的整数型元祖 训练向量 X 的数组维度 |
另见:
支持向量机使用libsvm实现。
可扩展线性支持向量机使用liblinear进行分类。
参考文献:
示例:
>>> 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]
方法:
decision_function (X) |
计算X中样本的决策函数。 |
---|---|
fit (X, y[, sample_weight]) |
根据给定的训练数据拟合支持向量机模型。 |
get_params ([deep]) |
获取这个估计器的参数。 |
predict (X) |
在X中对样本进行分类 |
score (X, y[, sample_weight]) |
返回给定测试数据和标签的平均精度。 |
set_params (**params) |
设置这个估计器的参数。 |
__init__(*, 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)
初始化self。请参阅help(type(self)获取准确的说明。
计算X中样本的决策函数。
参数 | 说明 |
---|---|
X | 形如(n_samples, n_features)的数组 |
返回值 | 说明 |
---|---|
X | 形如 (n_samples, n_classes * (n_classes-1) / 2)的数组 返回模型中每个类的样本决策函数。如果decision_function_shape =“ ovr”,则形状为(n_samples,n_classes)。 |
注:
若decision_function_shape= ' ovo ',则函数值与样本X到分离超平面的距离成正比。如果需要精确的距离,用函数值除以权值向量的范数(coef_)。更多细节请参见 这个问题 。若decision_function_shape= ' ovr ',则该决策函数是ovo决策函数的单调变换。
fit(X, y, sample_weight=None)
根据给定的训练数据拟合支持向量机模型。
参数 | 说明 |
---|---|
X | 形如(n_samples, n_features) 或者 (n_samples, n_samples)的数组或者稀疏矩阵 训练向量,其中n_samples为样本数量,n_features为特征数量。对于kernel= " precomputed ", X的期望形状为(n_samples, n_samples)。 |
y | 形如(n_samples,)的数组 目标值(分类中的类标签,回归中的实数) |
sample_weight | 形如(n_samples,)的数组,默认=None 样本的权重。每个样品重新定标C。较高的权重将使分类器更加注重这些样本点。 |
返回值 | 说明 |
---|---|
self | object |
注:
如果X和y不是C-ordered,并且np.float64和X的连续数组不是scipy.sparse.csr_matrix,则可以复制X或y。
如果X是一个连续数组,则其他方法将不支持将稀疏矩阵作为输入。
get_params(deep=True)
参数 | 说明 |
---|---|
deep | bool, default = True 如果为真,则将返回此估计量和作为估计量的所包含子对象的参数 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名被映射至他们的值 |
predict(X)
对X中的样本执行分类。
对于返回值为+1或-1的one-class模型
参数 | 说明 |
---|---|
X | 形如(n_samples, n_features) 或者 (n_samples_test, n_samples_train)的数组或者稀疏矩阵 对于内核=“precomputed”,X的预期形状为(n_samples_test,n_samples_train)。 |
返回值 | 说明 |
---|---|
y_pred | 形如(n_sample, )的数组 X中样本的类别标签。 |
property predict_log_proba
计算X中样本的可能结果的对数概率。
该模型需要在训练时计算概率信息:将属性概率设置为True。
参数 | 说明 |
---|---|
X | 形如(n_samples, n_features) 或者 (n_samples_test, n_samples_train)的数组或者稀疏矩阵 对于内核=“precomputed”,X的预期形状为(n_samples_test,n_samples_train)。 |
返回值 | 说明 |
---|---|
T | 形如(n_sample, n_classes)的数组 返回模型中每个类的样本的对数概率。列与出现在属性classes_中的类别按顺序对应。 |
注:
概率模型是通过交叉验证建立的,因此其结果可能与通过预测得到的结果略有不同。而且,它会在非常小的数据集上产生无意义的结果。
property predict_proba
计算X中样本可能出现结果的概率。
模型需要在训练时计算出概率信息:将属性概率设置为True。
参数 | 说明 |
---|---|
X | 形如(n_samples, n_features)的数组 对于内核=“precomputed”,X的预期形状为(n_samples_test,n_samples_train)。 |
返回值 | 说明 |
---|---|
T | 形如(n_sample, n_classes)的数组 返回模型中每个类的样本的概率。列与出现在属性classes_中的类别按顺序对应。 |
注:
概率模型是通过交叉验证建立的,因此其结果可能与通过预测得到的结果略有不同。而且,它会在非常小的数据集上产生无意义的结果。
score(X, y, sample_weight=None)
返回给定测试数据和标签上的平均准确度。
在多标签分类中,这是子集精度,这是一个苛刻的指标,因为你需要对每个样本正确预测每个标签集。
参数 | 说明 |
---|---|
X | 形如 (n_samples, nfeatures)的数组 测试样本 |
y | 形如 (n_sample, ) 或者 (n_samples, n_outputs)的数组 X中结果为真的标签 |
sample_weight | 形如(n_samples,)的数组,默认=None 样本的权重 |
返回值 | 说明 |
---|---|
score | 浮点型 self.predict(X) wrt. y.的平均精度 |
set_params(self, **params)
设置当前估计量的参数。
该方法适用于简单估计量和嵌套对象(如pipline)。后者具有形式为<component>_<parameter>
的参数,这样就让更新嵌套对象的每个组件成为了可能。
参数 | 说明 |
---|---|
**f_params | dict 估计量参数 |
返回值 | 说明 |
---|---|
self | object 估计器实例 |