欢迎关注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)
错误术语的惩罚参数C
。C
越大,相当于惩罚松弛变量,希望松弛变量接近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]