matlab中安装libsvm3.21和使用
安装和测试环境:win7 64位,matlab2014b,vs2013。
一、生成matlab中使用的文件
解压该文件,在matlab中包含解压后的文件夹及子文件夹
设置当前工作目录为libsvm-3.21,输入命令mex -setup,之后会让你选择编译器什么的,自己看着选择就好了。
上一步成功后,设置当前工作目录为libsvm-3.21/matlab,输入命令make
之前的步骤都是为了生成在matlab中使用的相应文件:“libsvmread.mexw64”,”libsvmwrite.mexw64”,”svmtrain.mexw64”, “svmpredict.mexw64”。在路径libsvm-3.21/matlab下面可以找到。
二、在matlab使用生成的相应文件
在完成了生成相应文件的步骤后,就可以删除刚才所加到包含路径中的几个文件夹了,只需要保留生成的这四个文件就可以了,为了测试是否可用,把libsvm-3.21文件加下的heart_scale也保留下来。接下来就是将这些添加到matlab中。
把生成的四个文件放在一个文件夹中(如libsvm3.21),把这个文件夹添加到包含路径中。就可以使用了。但是为了和matlab中的svmtrain区分,可以将生成的文件中的svmtrain.mexw64、svmpredict.mexw64名字分别更改为libsvmtrain.mexw64、libsvmpredict.mexw64。
测试:将工作目录更改到测试文件heart_scale所在的文件夹下,在命令行窗口中输入一下命令
[heart_scale_label, heart_scale_inst] = libsvmread('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);
结果为
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)
三、注意
其实在windows64下,可以省略第一步生成相应文件的步骤,在官网下载的安装包中已经有了一个windows文件夹,里面已经包含了需要生成的相应文件,可以直接后面的步骤。 windows32下需要所有步骤,生成的文件的后缀名是‘.mexw32’。 另外,如果不进行第二个步骤,不删除第一个步骤中的包含路径的话,在最终使用libsvmpredict的时候,结果除了accuracy 会返回更多的参数。