Machine Learning (2) SVM

2.1 SVM

第二部分讲了支持向量机(Support Vector Machines,SVM)分类的基本原理,以及如何使用Python sklearn建立SVM分类器。

下面的介绍主要来自sklearn上关于朴素贝叶斯分类方法的介绍
http://scikit-learn.org/stable/modules/svm.html

Support vector machines (SVMs) are a set of supervised learning methods used for classification, regression and outliers detection.

支持向量机是一组无监督学习方法的集合,常用作分类,回归和异常值检测。

SVM有以下优点:

  • 在高维空间中运算效率高
  • 在维度数大于样本数的实例中仍然有效
  • 在决策方程中使用训练数据的子集,所以它的空间复杂度也不高
  • 其他方面:可以在决策方程中设置不同的核函数,有默认的核函数,但是也可以自定义核函数

SVM的缺点:

  • 如果特征的数目远大于样本的数目,SVM的表现也会比较差
  • 没有直接提供概率估计,需要使用开销巨大的五折交叉验证来实现

2.2 Classification

这里主要介绍一下如何使用sklearn.svm中的SVC方法,该方法的实现基于libsvm。实现过程和朴素贝叶斯分类器类似,下面是一个使用SVC进行分类的例子:

>>> 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()   # 初始化分类器
>>> clf.fit(X, y)    # 使用训练数据进行模型训练
>>> print(clf.predict([[-0.8, -1]]))   # 预测
[1]

SVC()函数中的参数定义如下:

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)[source]

但是常用的只有三个:kernel、C和gamma。

kernel: string类型,指定分类方程的核函数,默认值为‘rbf’。必须是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’或者是一个可以被调用的对象(a callable)。如果是一个callable的话,应该先从数据矩阵中计算出核矩阵(kernel matrix),核矩阵是一个n×n的方阵。

C: float类型,针对错分问题的惩罚参数,默认值为1.0。参数C在错分训练数据和简化决策边界之间进行权衡,较小的C使决策边界更加平滑,较大的C会通过选择更多的样本作为支持向量,来使训练样本的分类尽量正确。

gamma: float类型,默认值为‘auto’。直观上来说,gamma参数定义了单个训练样本影响程度的远近,较小的gamma值意味着影响程度“远”,较大的值意味着“近”。gamma参数可以被看作是,被模型选作支持向量的样本的影响半径的相反数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值