搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 挖挖机ML > 支持向量机实战(六) 核函数的小试验

支持向量机实战(六) 核函数的小试验

挖挖机ML 2017-11-29

        第五节介绍了SVM配合核函数进行非线性分类的机制。本节通过一个小例子来演示带核函数的SVM的分类效果。

        仍然使用PythonSklearn包来建立支持向量机分类器。用到的训练集同(鸢尾花)。首先引入用到的包,如下:

打印SVC函数,即支持向量机分类器,列出了默认的参数,其中C就是前文提到的惩罚因子;class_weight为各分类的权重;decision_function_shape为分类决策函数的类别,ovr(一对其它)和ovo(一对一);degree为多项式核的最高次方;gamma为rbf核的方差(类似正态分布的sigma),默认为auto取值为1/特征数kernel为核函数类型,本文演示:linear线性核、rbf高斯径向基核、poly多项式核、以及sigmoid核。其他参数random_state为随机种子值,tol为迭代停止的条件,默认小于0.001停止。

        下图为不同核函数的平均准确率,代码和结果如下:

支持向量机实战(六) 核函数的小试验

        在其他参数默认的情况下,鸢尾花这样只有150行的小数据集使用线性核就能达到高斯核同样高的精度0.98。

        而使用最广泛的高斯核rbf,在不同gamma值情况下的精度。如下:

支持向量机实战(六) 核函数的小试验

gamma值很小只有0.01时,高斯核函数的分布呈”瘦高型“,在训练集上准确率较高,但容易过拟合,它的交叉验证平均准确率相比其他最低(0.93)。当gamma增大到0.5时,准确率达到最高的0.98,之后继续增大gamma隔离地带会变得较宽,导致分错的数据变多,精度下降。

        再来看另一种常用的核——多项式核poly取不同次方的效果:

如上,degree取3时,交叉验证效果最好0.96,当degree继续增大一直到9次方时,出现了过拟合,准确率下降到0.94。

        最后,SVC有几个关于支持向量的属性,如下:

通过fit方法训练模型之后,模型的属性support_能给出训练得到的支持向量的样本号,而support_vectors_得到具体的支持向量样本。

        OK,到此,支持向量机的主要内容介绍完毕,希望本系列文章能起到抛砖引玉的效果,让大家能以此为基础更深入的探究支持向量机的奥秘。

        这居然是第一个完结的系列!后续还会有其他模型单独的系列文章发布。下次再见!


历史文章回顾





版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《支持向量机实战(六) 核函数的小试验》的版权归原作者「挖挖机ML」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注挖挖机ML微信公众号

挖挖机ML微信公众号:gh_6faede43cf21

挖挖机ML

手机扫描上方二维码即可关注挖挖机ML微信公众号

挖挖机ML最新文章

精品公众号随机推荐