前言
libSVM是台湾林智仁(Chih-Jen Lin) 教授2001年开发的一套支持向量机库,这套库运算速度挺快,能够很方便的对数据作分类或回归。因为libSVM程序小,运用灵活,输入参数少,而且是开源的,易于扩展,所以成为目前国内应用最多的SVM的库。
实验报告基于第一次使用libSVM后的体验撰写而成。
python
实验环境介绍
- 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进行训练(高斯核)
模型内容spa
- 使用线性核模型进行预测
- 使用高斯核模型进行预测
- 使用grid.py进行参数优化
优化结果3d
- 采用理论最优参数进行训练(默认采用高斯核)
模型内容code
- 采用理论最优模型进行预测
较本来模型有所提高blog
实验感悟
此次实验是我第一次使用libSVM,整体感受libSVM提供的工具十分便捷,很容易上手,而且功能十分强大。
对于本次实验所采用的鸢尾花数据集,采用高斯核训练的模型相较于采用线性核训练的模型会有选用更多的支持向量,但预测效果相差1%,而理论最佳模型选取了最少的支持向量,和采用线性核所训练出来的结果一直,虽然颇有多是数据集的影响,但也在必定程度上可以说明支持向量的多少并不必定可以决定模型的好坏。
本次实验的遗憾在于对于鸢尾花数据集并无一个明显地优化效果,但在以后的学习中,我还会继续实验,深刻感觉SVM的魅力。
图片