SVM及Sklearn使用
支持向量机SVM
支持向量机SVM,是常见的一种判别方法, 在机器学习领域是有监督学习模型,通常用来进行模式识别、分类及回归。
主要思想:
- 对线性可分情况进行判别;对线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本,转化为高维特征空间使其达到线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。
- 基于结构风险最小化理论,在特征空间中构建最优超平面,使得学习器得到全局最优化,且在整个样本空间的期望,以某个概率满足一定的上界。
sklearn中的SVM(svm.svc)
具体的各参数可以参考: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
在这里主要说一下几个参数以及方法的使用,以备自己的不时之需:
- C:float, optional(default=1.0)
C-SVC的惩罚参数,C越大相当于C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。 - kernel: string, optional(default=‘rbf’)
核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’。 - degree: int, optional (default=3)
多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。 - gamma: float, optional (default=‘auto’)
‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
主要方法
- decision_function(X): Distance of the samples X to the separating hyperplane
- fit(X, y, samples_weight=None ): Fit the SVM model according to the given training data.
这个方法的主要目的是根据训练数据来训练出合适的SVM模型 - get_params([deep]): Get parameters for this estimator.
- predict(X): Perform classification on samples in X.
perform classification on samples in X.
For an one-class model, +1 or -1 is returned. - score(X, y, sample_weight=None): Returns the mean accuracy on the given test data and labels.