MATLAB安装libsvm工具箱的方法

    本文转载于https://www.cnblogs.com/Ran-Chen/p/9462825.html

    支持向量机(support vector machine,SVM)是机器学习中一种流行的学习算法,在分类与回归分析中发挥着重要作用。基于SVM算法开发的工具箱有很多种,下面我们要安装的是十分受欢迎的libsvm工具箱。

1.libsvm简介

LIBSVM 是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的 SVM
模式识别与回归的软件包,它不仅提供了编译好的可在 Windows
系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用; 该软件还有一个特点,就是对 SVM
所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross-SVM回归等问题,包括基于一对一算法的多类模式识别问题。

2.libsvm与MATLAB自带的svm工具箱的区别

    在MATLAB中,同样自带了一个svm工具箱,不过相比于libsvm,在功能性和易用性方面有一些差距。具体差别表现在:

  • MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题
  • MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用一对一方法支持多分类
  • MATLAB自带的svm工具箱无法改变高斯核函数中的参数,而libsvm可以
  • MATLAB自带的svm工具箱也有一些优点,比如在解决二次规划问题时,可选三种方法(经典二次方法;SMO;最小二乘),而libsvm只能是SMO。

    常见的扩展为多分类的方法有:

  • 一对一(one-versus-one)方法,训练时对于任意两类样本都会训练一个二分类器,最终得到k(k-1)/2个二分类器,共同组成k分类器。对未知样本分类时,使用所有的k(k-1)/2个分类器进行分类,将出现最多的那个类别作为该样本最终的分类结果。
  • 一对多(one-versus-rest)方法:训练时依次把k类样本中的某个类别归为一类,其它剩下的归为另一类,使用二分类的SVM训练处一个二分类器,最后把得到的k个二分类器组成k分类器。对未知样本分类时,分别用这k个二分类器进行分类,将分类结果中出现最多的那个类别作为最终的分类结果。

3.libsvm的下载

    在libsvm的官方主页上可以下载libsvm的扩展包,支持MATLAB、Java、Python等多种语言,这里我们选择MATLAB版本,下载zip文件即可。
在这里插入图片描述
     或者直接下载分享的文件包,点击这里下载
     注意
    如果是从官方主页上下载,需要再下载一个数据集[heart_scale.mat],方便之后的测试,点击这里下载。

4.libsvm的安装

    在\libsvm-3.23\matlab目录下,有一个README文件,详细说明了安装方法。

    如果是windows 64位系统,预编译的二进制文件已经提供,在\libsvm-3.23\windows文件下,可以看到4个文件,分别是
    libsvmread.mexw64、 libsvmwrite.mexw64、 svmtrain.mexw64、svmpredict.mexw64

    这样可以跳过下面第一步的编译步骤。

4.1 编译

    如果是win32位系统,需要自己重新编译c文件。参考原博客https://www.cnblogs.com/Ran-Chen/p/9462825.html
    注意:
    当matlab不支持libsvm工具包中提供好的mexw64文件,原因是MATLAB的版本过低或VS版本较高,解决方法是安装更高版本的matlab。

4.2 重命名函数

    在得到libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64这4个文件后,为了避免和svm内置的函数冲突,最好将svmtrain.mexw64、svmpredict.mexw64这两个文件重命名为libsvmtrain.mexw64、libsvmpredict.mexw64。(文件夹里已经命名好了)

4.3 添加到toolbox

    将libsvm-3.23文件夹放置到\Matlab\toolbox目录下;
    主页> 设置路径> 添加文件夹> 选择libsvm-3.23文件夹;(这一步不能忽略!!我最开始以为手动把libsvm-3.23放到toolbox下就可以了,必须要在matlab进行这步操作!
在这里插入图片描述
主页> 预设> 常规> 更新工具箱缓存> 确定

5.测试

依次在命令行输入下面3条语句:

load heart_scale
model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g     0.07');
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);

若出现以下结果,说明安装正确。
在这里插入图片描述

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值