机器学习:sklearn.svm.SVC 参数说明

1.参考文献:SVM基本原理  https://www.cnblogs.com/vipyoumay/p/7560061.html

2.sklearn.svm.SVC()参数

参数:

C:C-SVC的惩罚参数C?默认值是1.0

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

l  kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ 

    0 – 线性:u'v

    1 – 多项式:(gamma*u'*v + coef0)^degree

    2 – RBF函数:exp(-gamma|u-v|^2)

    3 –sigmoid:tanh(gamma*u'*v + coef0)

l  degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

l  gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

l  coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

l  probability :是否采用概率估计?.默认为False

l  shrinking :是否采用shrinking heuristic方法,默认为true

l  tol :停止训练的误差值大小,默认为1e-3

l  cache_size :核函数cache缓存大小,默认为200

l  class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)

l  verbose :允许冗余输出?

l  max_iter :最大迭代次数。-1为无限制。

l  decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3

l  random_state :数据洗牌时的种子值,int值

主要调节的参数有:C、kernel、degree、gamma、coef0。

3.sklearn通过OneVsRestClassifier实现svm.SVC的多分类

sklearn中针对多分类其使用了1vs多,decision_function_shape : 'ovo', 'ovr', default='ovr'

import numpy as np
from sklearn.datasets import load_digits
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
from sklearn.model_selection import train_test_split


digits = load_digits()

x, y = digits.data, digits.target
y = label_binarize(y, classes=list(range(10)))
x_train, x_test, y_train, y_test = train_test_split(x, y)
model = OneVsRestClassifier(svm.SVC(kernel='linear'))
clf = model.fit(x_train, y_train)

In [236]: clf.score(x_train, y_train)
Out[236]: 0.97475872308834444

In [237]: clf.score(x_test, y_test)
Out[237]: 0.85999999999999999

In [242]: np.argmax(y_test, axis=1)
Out[242]: array([0, 0, 2, ..., 5, 6, 7], dtype=int64)

In [243]: np.argmax(clf.decision_function(x_test), axis=1)
Out[243]: array([0, 0, 2, ..., 5, 6, 7], dtype=int64)

猜你喜欢

转载自blog.csdn.net/qq_34706955/article/details/81288556