[Matlab]在Matlab中安装与使用LibSVM工具箱(小白指南)

当初在CSDN上看了很多LibSVM的教程,下载再编译、改路径什么的一头雾水,现在把安装过程图文总结出来,小白也能十分钟安装好LibSVM工具箱!

安装好了可以直接跳到第三节:LibSVM使用指南!

一、LibSVM工具箱下载

工具箱下载地址:https://www.csie.ntu.edu.tw/~cjlin/libsvm/

往下拉找到Download LIBSVM,点击zip.file下载压缩包

1.1、官网下载的数据包中没有Matlab对应的数据集格式,点此下载heart_scale.mat. 下载后放在解压缩后的libsvm-3.24文件夹中即可,此时可以得到如下图所示的文件夹内容:假如是windows 64位系统,预编译的二进制文件会在libsvm-3.24\windows文件下提供,分别是libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。

如果是32位系统,就需要手动编译c文件,生成MATLAB可识别的mexw32文件。(具体方法可以百度或者提问)

二、将LibSVM添加到toolbox路径

2.1、为了避免和自带的svm工具箱函数冲突,要将svmtrain.mexw64、svmpredict.mexw64这两个文件重命名为libsvmtrain.mexw64、libsvmpredict.mexw64。

2.2、将1.1中下载好的文件夹libsvm-3.24移动至你电脑中Matlab路径下的toolbox文件夹目录中,(即D:\Program Files (x86)\Matlab R2016a\toolbox);

2.3、打开Matlab软件,点击主页> 设置路径> 添加并包含子文件夹> 选择libsvm-3.24文件夹;

2.4、点击主页> 预设> 常规> 更新工具箱缓存> 确定

2.5、新建脚本执行下列指令:

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);

如果运行成功得到下列结果则说明安装完成

三、LibSVM使用指南

LibSVM的使用主要要掌握三个方面:

1、前期数据的归一化与格式处理;2、训练模型和预测的输入参数;3、模型输出参数和预测结果

%%%%%%%这里以下先不用看%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
for i=1:50
    pop(i,:)=rand(1,2);  
end
x=pop;
x=abs(x)    % Y. x为粒子的位置
a=isnan(x);

%%%%%%%读入数据样本(训练数据集加测试数据集)%%%%%%%%%%%%%
%%%%%%%1932个中有四种数据,每种数据的数量就是对应点数%%%%%
load co_max_fin
co = co_max_fin;%一氧化碳348个点
load ben_max_fin
ben=ben_max_fin;%苯432个点
load jben_max_fin 
jben=jben_max_fin;%甲苯396个点
load jq_max_fin
jq=jq_max_fin;%甲醛756个点
train_x1=[ben;jben;jq;co];%共1932个点

%%%%%%%转置后进行列的归一化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%mapminmax是归一化函数,每列是一个样本,每行是多个样本的同一维%
output=mapminmax(train_x1',0,1);        
input=output';

%%%%%%%取出每种样本中的一部分作为训练集Xtrain,并标注Lable在Ytrain中%%%%%%%%
%%%%%%%%%%%%%%%将含有多种样本的数据包作为测试集Xtest%%%%%%%%%%%%%%%%%%%%%%%
Xtrain=[input(1:288,:);input(433:696,:);input(829:1332,:);input(1585:1816,:)];
Xtest=[input(289:432,:);input(697:828,:);input(1333:1584,:);input(1817:1932,:)];
Ytrain=[1*ones(288,1);2*ones(264,1);3*ones(504,1);4*ones(232,1)];
Ytest=[1*ones(144,1);2*ones(132,1);3*ones(252,1);4*ones(116,1)];

%%%设置模型参数后,用训练集训练出模型model,再用model对训练集进行验证,对测试集进行预测%%%%%
c=x(2);                %惩罚因子
gama=x(1);             %svm的rbf核的参数
cmd=[' -c ',num2str(c),' -g ',num2str(gama)]; 
model = libsvmtrain(Ytrain,Xtrain,cmd);   
model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');
[predict_label_train, accuracy_train,~] = libsvmpredict(Ytrain, Xtrain, model);
[predict_label_test, accuracy_test,~] = libsvmpredict(Ytest, Xtest, model); 

%%%最后一步的参数具体含义见下文:

 

  • 50
    点赞
  • 196
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值