libSVM使用实验报告

前言

  libSVM是台湾林智仁(Chih-Jen Lin) 教授2001年开发的一套支持向量机库,这套库运算速度挺快,能够很方便的对数据作分类或回归。因为libSVM程序小,运用灵活,输入参数少,而且是开源的,易于扩展,所以成为目前国内应用最多的SVM的库。
  实验报告基于第一次使用libSVM后的体验撰写而成。
python

实验环境介绍

  • libSVM版本
    libsvm-3.24
  • python版本
    python-3.7.8
  • 数据集
    采用UCI上的iris数据集

实验准备

  1. 下载libsvm-3.24.zip解压至D:\Program Files\libsvm内容以下:
    在这里插入图片描述
  2. 下载gnuplot至D:\Program Files\gnuplot内容以下:
    在这里插入图片描述
  3. 对iris数据集进行处理

处理前工具

在这里插入图片描述

处理后学习

在这里插入图片描述

实验流程

  • 使用svm-scale对数据进行标准化,区间为[-1, 1]。
    在这里插入图片描述

处理后数据集测试

在这里插入图片描述

  • 使用tools中的subset.py拆分训练集和测试集(默认采用分层选择)
    在这里插入图片描述
  • 采用svm-train.py进行训练(线性核)
    在这里插入图片描述

模型内容优化

在这里插入图片描述

  • 采用svm-train.py进行训练(高斯核)
    在这里插入图片描述

模型内容spa

在这里插入图片描述

  • 使用线性核模型进行预测
    在这里插入图片描述
  • 使用高斯核模型进行预测
    在这里插入图片描述
  • 使用grid.py进行参数优化
    在这里插入图片描述

优化结果3d

在这里插入图片描述

  • 采用理论最优参数进行训练(默认采用高斯核)
    在这里插入图片描述

模型内容code

在这里插入图片描述

  • 采用理论最优模型进行预测

较本来模型有所提高blog

在这里插入图片描述

实验感悟

  此次实验是我第一次使用libSVM,整体感受libSVM提供的工具十分便捷,很容易上手,而且功能十分强大。
  对于本次实验所采用的鸢尾花数据集,采用高斯核训练的模型相较于采用线性核训练的模型会有选用更多的支持向量,但预测效果相差1%,而理论最佳模型选取了最少的支持向量,和采用线性核所训练出来的结果一直,虽然颇有多是数据集的影响,但也在必定程度上可以说明支持向量的多少并不必定可以决定模型的好坏。
  本次实验的遗憾在于对于鸢尾花数据集并无一个明显地优化效果,但在以后的学习中,我还会继续实验,深刻感觉SVM的魅力。

图片

相关文章
相关标签/搜索