在MATLAB平台使用libsvm工具箱中python脚本训练SVM分类器
第一步:前期准备:安装MATLAB,python,libsvm
libsvm资源
确保matlab,python环境安装与设置完毕,可以执行操作。
第二步:将保存为*.mat的数据转换为libsvm可接受数据类型
第三步:检查grid.py与easy.py内可执行文件路径是否正确
注:如果着急完成任务,可以忽略(1)(2)两点,直接修改路径。
(1)首先你需要一个Visual Studio Code来更高效的阅读和修改python代码
(2)如果没有python基础,你看文件会因为无从下手而头疼。这时你需要一份整理良好的python教程作为字典。
(3)grid.py检查位置在:
is_win32 = (sys.platform == 'win32')
if not is_win32:
svmscale_exe = "../svm-scale"
svmtrain_exe = "../svm-train"
svmpredict_exe = "../svm-predict"
grid_py = "./grid.py"
gnuplot_exe = "C:\Program Files\gnuplot\bin\gnuplot"
else:
# example for windows
svmscale_exe = r"..\windows\svm-scale.exe"
svmtrain_exe = r"..\windows\svm-train.exe"
svmpredict_exe = r"..\windows\svm-predict.exe"
gnuplot_exe = r"C:\Program Files\gnuplot\bin\gnuplot.exe"
grid_py = r".\grid.py"
第四步:在windows命令行窗口执行python脚本确认修改完毕
(1)打开windows命令行窗口
(2)用cd命令切换到脚本所在文件夹
(3)先试grid.py,再试easy.py
grid.py调用格式可以看readme文件,没有特殊需要直接用缺省设置
Microsoft Windows [版本 10.0.18362.778]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\董志亮>cd /d D:\MATLAB\R2016a\toolbox\libsvm-3.24\tools
D:\MATLAB\R2016a\toolbox\libsvm-3.24\tools>python grid.py D:\MATLAB\R2016a\toolbox\libsvm-3.24\matlab\coordinate_sample
第五步:在matlab中编写函数实现调用windows命令行并将输出返回到matlab中
(1)关键函数system(),代码如下:
% 在系统命令行使用脚本
function [result,status] = python(varargin)
%命令字符串
cmdString='python';
for i = 1:nargin
thisArg = varargin{i};
if isempty(thisArg) || ~ischar(thisArg)%参数空或不是字符串
error('All input arguments must be valid strings.');
elseif exist(thisArg)==2 %这是一个在Matlab路径中的可用的文件
if isempty(dir(thisArg))
%得到完整路径
thisArg = which(thisArg);
end
elseif i==1
% 第一个参数是Python文件 - 必须是一个可用的文件
error(['Unable to find Python file: ', thisArg]);
end
% 如果thisArg中有空格,就用双引号把它括起来
if any(thisArg == ' ')
thisArg = ['"', thisArg, '"'];
end
% 将thisArg加在cmdString后面
cmdString = [cmdString, ' ', thisArg];
end
%发送命令
[status,result]=system(cmdString);
end