机器学习:支持向量机(SVM)课堂实践

这是在学习《机器学习基础》课程的支持向量机这一章时,做的课堂实践内容,详见《机器学习(周立华)》第六章,记录一下以便回顾。
数据集使用 Mnist-image数据集
完整代码见github:SVM课程实践

机器学习算法基础

SVM

在这个实验中,支持向量机(Support Vector Macchine,简称SVM) 被用来解决分类问题。目的是找出区间最大的划分超平面。SVM的基本类型是

对于高维特征空间,可以通过训练样本的 核函数(Kernel) 展开模型的最优解,获得支持向量展开

核函数

1.线性核

线性核(Linear Kernel)的实现使用sklearn库中SVC函数的默认参数 (‘ linear ‘)
线性核函数是:

2.径向基核

径向基核函数(Radial Basis Function,简称RBF,也叫高斯核)的实现也使用了sklearn库中SVC函数的默认参数 (‘ rbf ‘)
RBF核函数为:

3.自定义核函数

利用 核函数的性质 构造了一个新的核函数: 两个核函数的直积也是一个核函数。
К1 是线性核,К2 是拉普拉斯核:

自定义一个核函数: К1 ⊗ К2.
К1和К2的内核函数是通过自己编写的python函数实现的,在径向基和线性核的编程过程中展示了更多的细节。

python工具包

Python的scikit-learn库有SVC工具包,可以自定义以下参数。
C: float, default=1.0
-正则化参数
Kernel {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, default=’rbf’
Degree: int, default=3
-Degree是多项式核函数 (‘ poly ‘) 的阶数,其他核基本忽略该参数。
有很多参数,但在本次实验中,只修改了核函数,其他参数使用默认值。

实验结果展示

JupyterLab的python程序运行结果:

从结果来看:
首先,展示测试图像。每个标签显示三张图片,按照000-999的矩阵输出,对应的数字如图所示。
然后分别用 线性核函数、径向基核函数、自定义核函数 三种核函数构造SVM,用训练集进行模型训练,用测试集衡量识别精度,输出识别准确率评价指标按顺序显示。
ps.从结果看,自定义核并不适合这个任务。

参考资料

1.Mnist-image数据集下载: http://yann.lecun.com/exdb/mnist/

2.scikit-learn库的安装和SVC的API:
https://scikit-learn.org/stable/index.html

3.《机器学习(周立华)》(西瓜书)

  • Copyrights © 2022-2025 Kennan Yang
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信