sklearn.svm.SVC() 函数全称为 C-支持向量分类器 。

class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, 
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’, random_state=None)

参数

C

float,optional (default = 1.0)

错误术语的惩罚参数CC越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但容易过拟合,泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

kernel

string,optional (default = ‘rbf’)

核函数类型,str类型,默认为’rbf’。可选参数为:

  • linear:线性核函数
  • poly:多项式核函数
  • rbf:径像核函数/高斯核
  • sigmod:sigmod核函数
  • precomputed:核矩阵

precomputed表示自己提前计算好核函数矩阵,这时候算法内部就不再用核函数去计算核矩阵,而是直接用你给的核矩阵,核矩阵需要为n*n的。

degree

int,optional (default = 3)

多项式核函数的阶数,int类型,可选参数,默认为3。这个参数只对多项式核函数有用,是指多项式核函数的阶数n,如果给的核函数参数是其他核函数,则会自动忽略该参数。

gamma

float,optional (default = ‘auto’)

核函数系数,float类型,可选参数,默认为auto。只对’rbf’ ,’poly’ ,’sigmod’有效。如果gammaauto,代表其值为样本特征数的倒数,即1/n_features

coef0

float,optional (default = 0.0)

核函数中的独立项,float类型,可选参数,默认为0.0。只有对 ’poly’ 和 ’sigmod’ 核函数有用,是指其中的参数c。

shrinking

bool, optional (default = True)

是否采用启发式收缩方式,bool类型,可选参数,默认为True。

启发式收缩方式就是:如果能预知哪些变量对应着支持向量,则只要在这些样本上训练就够了,其他样本可不予考虑,这不影响训练结果,但降低了问题的规模并有助于迅速求解,起到一个加速训练的效果。

probability

bool, optional (default = True)

是否启用概率估计,bool类型,可选参数,默认为False,这必须在调用fit()之前启用,并且会fit()方法速度变慢。

tol

float,optional (default = 1e-3)

svm停止训练的误差精度,float类型,可选参数,默认为1e^-3。

cache_size

float,optional (default = 200)

内存大小,float类型,可选参数,默认为200。指定训练所需要的内存,以MB为单位,默认为200MB。

class_weight

{dict,‘balanced’},可选

类别权重,dict类型或str类型,可选参数,默认为None。给每个类别分别设置不同的惩罚参数C,如果没有给,则会给所有类别都给C=1,即前面参数指出的参数C。如果给定参数’balance’,则使用y的值自动调整与输入数据中的类频率成反比的权重。

verbose

bool, optional (default = False)

是否启用详细输出,bool类型,默认为False,此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般情况都设为False,不用管它。

max_iter

int,optional (default = -1)

最大迭代次数,int类型,默认为-1,表示不限制。

decision_function_shape

‘ovo’,‘ovr’,默认=‘ovr’

决策函数类型,可选参数’ovo’和’ovr’,默认为’ovr’。’ovo’表示one vs one,’ovr’表示one vs rest。

决定了分类时,是一对多的方式来构建超平面,还是一对一。

一对多:训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。

一对一:其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。Libsvm中的多类分类就是根据这个方法实现的。

random_state

int,RandomState实例或None,可选(默认=无)

数据洗牌时的种子值,int类型,可选参数,默认为None。伪随机数发生器的种子,在混洗数据时用于概率估计。

参考链接

sklearn中SVC中的参数说明与常用函数_svc参数-CSDN博客

sklearn.svm.SVC()函数解析(最清晰的解释)-CSDN博客