1.初上手遇到的问题:matlab没找到你的C++编译器
在用mex -setup命令然后选Y,但matlab返回的结果中没有你的C++编译器时,
Compiler: Lcc-win32 C 2.4.1
Location: D:\PROGRA~1\MATLAB\R2010b\sys\lcc
这是matlab自带的C编译器,但是libsvm原始版本是C++实现的,因此需要C++的编译器来编译,所以不能用matlab自带的C编译器。
这时你应该mex -setup后选n,然后会出现如下画面
这时,就能在列表中看到我所安装的Microsoft Visual C++ 6.0,回复 6,然后按照提示修改路径即可。
Compiler: 6
The default location for Microsoft Visual C++ compilers is C:\Program Files\Microsoft Visual Studio,
but that directory does not exist on this machine.
Use C:\Program Files\Microsoft Visual Studio anyway [y]/n? n
Please enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio] D:\Program Files\Microsoft Visual Studio
Please verify your choices:
Compiler: Microsoft Visual C++ 6.0
Location: D:\Program Files\Microsoft Visual Studio
Are these correct [y]/n? y
Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2010b\mexopts.bat
From template: D:\PROGRA~1\MATLAB\R2010b\bin\win32\mexopts\msvc60opts.bat
Done . . .
C++编译器配置成功。
2.建立model结构体,体验训练与预测
输入make,
左侧一栏能看见系统生成了svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件。
输入load heart_scale
右上角 Workspace中出现了heart_scale_inst和 heart_scale_label
输入model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 2');
生成了model结构体,并进行训练
其中heart_scale_label是训练样本类别列向量,heart_scale_inst是训练样本特征属性矩阵。
model模型经训练后,使用它进行预测
>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
预测结果在predict_label, accuracy, dec_values三个变量中。
类别预测时,预测的类别在predict_label中;
回归预测时,预测的回归结果在dec_values中。
accuracy,是一个3维的向量,从上到下分别是:分类准率(分类问题中用到的参数指标);平均平方误差MSE (回归问题中用到的参数指标);平方相关系数r2 (回归问题中用到的参数指标)。
dec_values,是个矩阵,包含着决策值或者是概率估计(当’-b 1’被指定时)。
当训练数据有n个、k类时,决策值矩阵是一个n行k*(k-1)/2列的矩阵,每一行的输出是k*(k-1)/2个二分类器的结果。
当’-b 1’被指定时,概率估计矩阵是一个n行k类的矩阵,每一行的输出是该测试数据属于每个类的概率。
本文介绍如何解决Matlab找不到C++编译器的问题,完成LibSVM库的配置,并演示如何利用LibSVM进行模型训练及预测。
1466

被折叠的 条评论
为什么被折叠?



