基于经典的支持向量机算法完成鸢尾花的分类问题( 四 )


错误项的惩罚系数 。 C越大 , 即对分错样本的惩罚程度越大 , 因此在训练样本中准确率越高 , 但是泛化能力降低 , 也就是对测试数据的分类准确率降低 。 相反 , 减小C的话 , 容许训练样本中有一些误分类错误样本 , 泛化能力强 。 对于训练样本带有噪声的情况 , 一般采用后者 , 把训练样本集中错误分类的样本作为噪声 。
当c大的时候的效果为:
svc = svm.SVC(kernel='linear',C=1e3)
基于经典的支持向量机算法完成鸢尾花的分类问题
本文插图
可以看出当c很大的时候 , 会发现它的泛化效果不太好
当c小的时候的效果为:
svc = svm.SVC(kernel='linear',C=1e-1)
基于经典的支持向量机算法完成鸢尾花的分类问题
本文插图
可以看出其实泛化效果也不是太好 , 可能是测试数据集不多的原因 。
支持向量机的有个好处是对于许多数据集 , 默认参数'C=1'其实工作得很好 。
核方法
采用核方法 , 能够很方便地产生非线性分类边界 。
linear , 线性核 , 会产生线性分类边界 。 一般来说它的计算效率最高 , 而且需要数据最少 。 poly, 多项式核 , 会产生多项式分类边界 。 rbf , 径向基函数 , 也就是高斯核 , 是根据与每一个支持向量的距离来决定分类边界的 。 它的映射到无线维的 。 它是最灵活的方法 , 但是也需要最多的数据 。
演示:
svc = svm.SVC(kernel='linear')线性核
基于经典的支持向量机算法完成鸢尾花的分类问题
本文插图
svc = svm.SVC(kernel='poly', degree=4)多项式核:
基于经典的支持向量机算法完成鸢尾花的分类问题
本文插图
svc = svm.SVC(kernel='rbf', gamma=1e2)高斯核
基于经典的支持向量机算法完成鸢尾花的分类问题
本文插图
这就是三种不同核方法的拟合效果


推荐阅读