libSVM使用实验报告
前言
libSVM是台湾林智仁(Chih-Jen Lin) 教授2001年开发的一套支持向量机库,这套库运算速度挺快,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。
实验报告基于第一次使用libSVM后的体验撰写而成。
实验环境介绍
- libSVM版本
libsvm-3.24 - python版本
python-3.7.8 - 数据集
采用UCI上的iris数据集
实验准备
- 下载libsvm-3.24.zip解压至
D:\Program Files\libsvm
内容如下: - 下载gnuplot至
D:\Program Files\gnuplot
内容如下: - 对iris数据集进行处理
处理前
处理后
实验流程
- 使用svm-scale对数据进行标准化,区间为[-1, 1]。
处理后数据集
- 使用tools中的subset.py拆分训练集和测试集(默认采用分层选择)
- 采用svm-train.py进行训练(线性核)
模型内容
- 采用svm-train.py进行训练(高斯核)
模型内容
- 使用线性核模型进行预测
- 使用高斯核模型进行预测
- 使用grid.py进行参数优化
优化结果
- 采用理论最优参数进行训练(默认采用高斯核)
模型内容
- 采用理论最优模型进行预测
较原本模型有所提升
实验感悟
这次实验是我第一次使用libSVM,总体感觉libSVM提供的工具十分便捷,很容易上手,并且功能十分强大。
对于本次实验所采用的鸢尾花数据集,采用高斯核训练的模型相较于采用线性核训练的模型会有选用更多的支持向量,但预测效果相差1%,而理论最佳模型选取了最少的支持向量,和采用线性核所训练出来的结果一直,虽然很有可能是数据集的影响,但也在一定程度上能够说明支持向量的多少并不一定能够决定模型的好坏。
本次实验的遗憾在于对于鸢尾花数据集并没有一个明显地优化效果,但在之后的学习中,我还会继续实验,深入感受SVM的魅力。