SVC 实现策略
示例代码
from sklearn import svm
X=[[0,0], [1,1]]
y=[0,1]
clf=svm.SVC()
clf.fit(X,y)

参数解释:
-
C=1.0
错误项的惩罚系数,默认为1.0。C越大,对分错样本的惩罚程度越大;训练样本中准确率越高,而泛化能力降低。 -
cache_size=200
指定训练所需要的内存,以MB为单位,默认为200MB。 -
class_weight=None
给每个类别分别设置不同的惩罚参数C,如果没有给,则会给所有类别都给C=1;如果给定参数‘balance’,则使用y的值自动调整与输入数据中的类频率成反比的权重。 -
coef0=0.0
核函数中的独立项,只有对‘poly’和‘sigmod’核函数有用,是指其中的参数c -
decision_function_shape='ovr'
原始的svm只适用于二分类问题,如果要将其扩展到多分类,就要采取一定的融合策略。
这里提供了三种选择:
‘ovo’:一对一;即将类别两两之间进行划分,用二分类的方法模拟多分类的结果;如果分成n类,则需要n * (n-1) / 2 个分类器。
‘ovr’:一对多;即一个类别与其他类别进行划分,只需要n个分类器。
‘None’:不采用任何融合策略。
默认‘ovr’,比‘ovo’略好一点。 -
degree=3
int型参数,默认为3,只对多项式核函数有用, 是指函数的阶数n;
如果核函数为其他函数,则自动忽略该函数 -
gamma='auto'
float函数,默认为auto,核函数系数,只对'rbf','poly','sigmod'有效。
如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features. -
kernel='rbf'
算法中采用的核函数类型,可选参数:
‘linear’:线性函数
‘poly’:多线性核函数
‘rbf’:径像核函数/高斯核
‘sigmod’:sigmod核函数
‘precomputed’:核矩阵 -
max_iter=-1
最大迭代次数,如果为-1,表示不限制 -
probability=False
是否启用概率估计。这必须在调用fit()之前启用,并且fit()方法速度变慢 -
random_state=None
伪随机数发生器的种子,在混洗数据时用于概率估计 -
shrinking=True
是否采用启发式收缩方式 -
tol=0.001
float参数,指svm停止训练的误差精度 -
verbose=False
是否启用详细输出,此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般 设置为False。
预测结果
clf.predict([[3,4],[0,0]])

其他方法:
-
support_vectors_
获得支持向量 -
support_
获得支持向量的索引 -
n_support_
为每一个类别获得支持向量的数量
多元分类的代码及结果
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
dec.shape[1]
第6行代码 查看分类器的个数
LinearSVC 实现策略

其中参数
- multi_class
负责多分类问题中分类策略制定,有‘ovr’和‘crammer_singer’ 两种参数值可选,默认值是’ovr’,'ovr'的分类原则是将待分类中的某一类当作正类,其他全部归为负类,通过这样求取得到每个类别作为正类时的正确率,取正确率最高的那个类别为正类;‘crammer_singer’ 是直接针对目标函数设置多个参数值,最后进行优化,得到不同类别的参数值大小
总结
支持向量分类有三种不同的实现形式是:SVC、NuSVC、LinearSVC
SVC和NuSVC是相似的方法,接受稍许不同的参数设置
LinearSVC是另一个实现线性核函数的支持向量分类,且不接受关键词kernel,因为其被假设为线性的,同时也缺少一些SVC和NuSVC的成员,比如support_.
同样的,svm也可用于回归。实现形式有:
SVR NuSVR LinearSVR
关于 密度估计、异常检测、复杂度
使用诀窍、核函数、数学公式、sklearn的实现细节,参考
http://sklearn.apachecn.org/#/docs/5
参考链接还有
https://www.cnblogs.com/solong1989/p/9620170.html
https://blog.csdn.net/github_39261590/article/details/75009069
网友评论