SVM(下):如何进行乳腺癌检测?
如何在sklearn中使用SVM
在Python的sklearn工具包中有SVM算法,首先引用工具包
from sklearn import svm
SVM可以做回归可以做分类器,当用SVM做回归的时候,使用SVR,当做分类器的时候,用的是SVC,SVC是个线性分类器,用于处理线性可分的数据,只能使用线性核函数,SVM就是通过核函数将样本从原始空间映射到一个更高维的特质空间中,使得样本在新的空间中线性可分。针对非线性的数据需要用到SVC,在SVC中既可以使用到线性核函数(进行线性划分),也能使用高维的核函数(进行非线性划分)。
如何创建一个SVM分类器?首先使用SVC的构造函数:model=svm.SVC(kernel='rbf',C=1.0,gamma='auto')
三个重要参数kernel、C、gamma,kernel代表核函数的选择,默认rbf即高斯核函数
- linear:线性核函数
- poly:多项式核函数
- rbf:高斯核函数
- sigmoid:sigmoid核函数
-
线性核函数,是在数据线性可分的情况下使用的,运算速度快、效果好,但是它不能处理线性不可分的数据
-
多项式核函数可以将数据从低维空间映射到高维空间,但是参数多,计算量大
-
高斯核函数同样可以将样本映射到高维空间,相比于多项式核函数来说所需要的参数比较少,性能好,默认使用高斯核函数
-
sigmoid核函数经常用于神经网络映射中,SVM实现的是多层神经网络
除了第一种线性核函数外,其余都可以处理线性不可分数据
C代表目标函数的惩罚系数,惩罚系数指的是分错样本时的惩罚系数,默认为1,当C越大的时候分类器的准确性越高,但同样容错率越低,泛化能力变差,C越小,泛化能力越强,准确性