文章用于总结对sklearn支持向量机模块的使用,系统回顾作者近期的相关学习,部分内容来源网站(侵权联系必删)。
第一部分 SVM用途及优缺点
1. 主要用途:
classification(分类)、regression(回归)、outliers detection(异常检测)
2. 优缺点:
支持向量机的优势在于:
在高维空间中非常高效.
即使在数据维度比样本数量大的情况下仍然有效.
在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的.
通用性: 不同的核函数与特定的决策函数一一对应.常见的内核已经提供,也可以指定定制的内核.
支持向量机的缺点包括:
如果特征数量比样本数量大得多,在选择核函数时要避免过拟合,而且正则化项是非常重要的.
支持向量机不直接提供概率估计,这些都是使用昂贵的五次交叉验算计算的.
3. 原理及公式推导
由于知乎及CSDN中关于SVM的介绍太多,此处不再累赘,附上一篇作者看到的相对比较详细的文章SVM
第二部分 SVM 针对不同问题的具体用法
(一). 分类问题
sklearn提供了三种基于svm的分类方法:
sklearn.svm.NuSVC()
sklearn.svm.LinearSVC()
sklearn.svm.SVC()
1. sklearn.svm.SVC()
全称是C-Support Vector Classification,是一种基于libsvm的支持向量机,由于其时间复杂度为O(n^2),所以当样本数量超过两万时难以实现。
官方源码:
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='ovr',
ran