SVM实现多分类的程序基础工作(一)——安装libsvm以及libsvm和matlab自带的svm的区别

        今天需要做一个用SVM实现多分类的程序,鉴于本人是matlab初学者,所以了解一些matlab的基本常识是很重要的。下面是在MATLAB编辑器(Editor)中一些快捷键的用法:

1)Tab】(或【Ctrl+]】)――增加缩进(对多行有效)

2)Ctrl+[】--减少缩进(对多行有效)

3)Ctrl+I】--自动缩进(即自动排版,对多行有效)

4)Ctrl+R】――注释(对多行有效)

5)Ctrl+T】――去掉注释(对多行有效)

6)F12】――设置或取消断点

7)F5】――运行程序

        另外为了完成SVM实现多分类的程序,我下载了台湾林智仁的libsvm工具箱,下面对libsvm工具箱的安装作简单的介绍:

1、  解压文件,把当前工作目录调整到libsvm所在的文件夹下。即选择file——set path——add folder(添加解压后的libsvm工具箱文件)——save

2、  然后在命令行里输入mex -setup  %选择一下编译器

3、  最后在命令行里输入make。即完成libsvm工具箱的安装。

 

嘿嘿,很简单吧,下面再介绍一下为什么要安装libsvm,这得要从matlab自带的svmlibsvm的区别(参考http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=35262)来说了。

 

1 MATLAB自带的svm实现函数仅有的模型是C-SVC(C-support vector classification)

libsvm工具箱有C-SVC(C-support vector classification),nu-SVC(nu-support vector classification),one-class SVM(distribution estimation),epsilon-SVR(epsilon-support vector regression),nu-SVR(nu-support vector regression)等多种模型可供使用。

2 MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题。

3 MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用1v1算法支持多分类。

4 MATLAB自带的svm实现函数采用RBF核函数时无法调节核函数的参数gamma,貌似仅能用默认的;而libsvm可以进行该参数的调节。

5 libsvm中的二次规划问题的解决算法是SMO;而MATLAB自带的svm实现函数中二次规划问题的解法有三种可以选择:经典二次方法;SMO;最小二乘。(这个是我目前发现的MATLAB自带的svm实现函数唯一的优点~

         在以上的一些对比下,目前svm的实现还是使用libsvm(这个应该是目前最好用的svm工具箱),当然MATLAB自带的svm实现函数对于简单问题也可使用,MATLAB自带的svm实现函数可能会在更加新的版本里面进行完善。

好的,我会为您介绍如何使用Matlab安装配置libsvm以及一个svm分类实例。 步骤1:下载libsvm 首先,您需要从libsvm官网下载所需的libsvm版本。下载链接为:https://www.csie.ntu.edu.tw/~cjlin/libsvm/ 下载完成后,您需要解压缩文件。 步骤2:添加libsvmMatlab路径 打开Matlab,选择"Set Path"选项,然后添加libsvm文件夹路径。这样libsvm的函数就可以被Matlab调用了。 步骤3:准备数据 为了演示如何使用libsvm分类器程序,我们需要准备一些数据。在这个例子中,我们将使用UCI的Iris数据集。您可以从以下链接下载数据集:https://archive.ics.uci.edu/ml/datasets/iris 步骤4:加载并处理数据 使用Matlab的load函数加载数据,然后将数据分为训练集和测试集。在这个例子中,我们将使用70%的数据作为训练集,30%的数据作为测试集。 ```matlab % Load iris dataset load iris.mat % Split data into training and testing sets (70/30 split) [trainIdx,testIdx] = dividerand(size(iris,1),0.7,0.3); trainData = iris(trainIdx,:); testData = iris(testIdx,:); ``` 步骤5:使用libsvm分类器 我们将使用libsvm中的svmtrain函数训练一个线性SVM模型,并使用svmpredict函数进行预测。以下是完整的Matlab代码: ```matlab % Load iris dataset load iris.mat % Split data into training and testing sets (70/30 split) [trainIdx,testIdx] = dividerand(size(iris,1),0.7,0.3); trainData = iris(trainIdx,:); testData = iris(testIdx,:); % Train a linear SVM model model = svmtrain(trainData(:,end),trainData(:,1:end-1),'-t 0'); % Make predictions on the testing set [predicted_label, accuracy, decision_values] = svmpredict(testData(:,end),testData(:,1:end-1),model); ``` 在上面的代码中,我们首先使用svmtrain函数训练一个线性SVM模型,然后使用svmpredict函数对测试集进行分类,并输出预测准确率和决策值。 希望这个简单的例子能帮助您了解如何使用libsvm进行分类。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值