sklearn之svm

作者: 还有下文 | 来源:发表于2019-04-29 22:14 被阅读5次

SVC 实现策略

示例代码

from sklearn import svm
X=[[0,0], [1,1]]
y=[0,1]
clf=svm.SVC()
clf.fit(X,y)
运行结果.png

参数解释:

  • 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]])
image.png

其他方法:

  • 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 实现策略

image.png

其中参数

  • 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

相关文章

网友评论

    本文标题:sklearn之svm

    本文链接:https://www.haomeiwen.com/subject/ghzunqtx.html