sklearn.svm.SVC()函数解析(最清晰的解释)

欢迎关注WX公众号:【程序员管小亮】

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)

该实现基于libsvm,所以在参数设置上有很多相似的地方。

PS: libsvm中的二次规划问题的解决算法是SMO。

参数

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

  • kernel : string,optional(default =‘rbf’)
    核函数类型,str类型,默认为’rbf’。可选参数为:

    • ’linear’:线性核函数
    • ‘poly’:多项式核函数
    • ‘rbf’:径像核函数/高斯核
    • ‘sigmod’:sigmod核函数
    • ‘precomputed’:核矩阵
    • precomputed表示自己提前计算好核函数矩阵,这时候算法内部就不再用核函数去计算核矩阵,而是直接用你给的核矩阵,核矩阵需要为n*n的。
  • degree : int,可选(默认= 3)
    多项式核函数的阶数,int类型,可选参数,默认为3。这个参数只对多项式核函数有用,是指多项式核函数的阶数n,如果给的核函数参数是其他核函数,则会自动忽略该参数。

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

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

  • shrinking : 布尔值,可选(默认= True)
    是否采用启发式收缩方式,bool类型,可选参数,默认为True。

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

  • tol : float,optional(默认值= 1e-3)
    svm停止训练的误差精度,float类型,可选参数,默认为1e^-3。

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

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

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

  • max_iter : int,optional(默认值= -1)
    最大迭代次数,int类型,默认为-1,表示不限制。

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

  • random_state : int,RandomState实例或None,可选(默认=无)
    数据洗牌时的种子值,int类型,可选参数,默认为None。伪随机数发生器的种子,在混洗数据时用于概率估计。

例子:

>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.svm import SVC
>>> clf = SVC(gamma='auto')
>>> clf.fit(X, y) 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)
>>> print(clf.predict([[-0.8, -1]]))
[1]

SVM算法实现理论和代码在博客:【机器学习】《机器学习实战》读书笔记及代码:第6章 - 支持向量机

原文地址:https://www.cnblogs.com/hzcya1995/p/13302734.html