如何在 MATLAB 中运行 libsvm?

Posted

技术标签:

【中文标题】如何在 MATLAB 中运行 libsvm?【英文标题】:How to run libsvm in MATLAB? 【发布时间】:2013-03-11 13:48:59 【问题描述】:

MATLAB下libsvm如何上手?

我已经下载了库,并在C:\Program Files\MATLAB\R2012a\toolbox\ 中提取了它, 但后来我不知道如何在 MATLAB 中使用它。

【问题讨论】:

读取位于matlab 子文件夹下的解压缩档案中的README 文件。您需要编译 MEX 文件,然后将文件夹添加到 MATLAB 搜索路径 您是否阅读了位于 matlab 文件夹中的 README 文件?有一些关于如何在 matlab 中使用它的说明。您需要在 matlab 中运行 make 命令等。 但是如何编译 MEX 文件?我试过这个link,但在matlab中是错误的。我也尝试了 mex -setup 但出现错误“使用 mex 时出错(第 206 行)无法成功完成。” @user2157806:您需要有一个supported C++ 编译器。你在什么Windows上?运行 mex.getCompilerConfigurations('Any','Installed') 以获取 MATLAB 识别的已安装编译器列表 先试试更简单的方法。假设您在 C:\libsvm 中提取了 libsvm。首先告诉 MATLAB 在哪里可以找到库,方法是运行:addpath('C:\libsvm\windows') 以使已编译的 MEX 文件在搜索路径中可用。现在您可以使用以下内容测试功能:svmtrain(double(rand(10,1)>0.5),rand(10,5),'-c 1 -g 0.1') 【参考方案1】:

在您选择的目录中下载并解压 libsvm,例如 C:\libsvm

C:\libsvm\matlab\README 文件中所述,首先您必须确保已安装supported C/C++ compiler。请注意,在 64 位系统上,您需要正确的 64 位版本的编译器(例如,Visual Studio Express 版本需要 Windows SDK)

>> mex -setup

选择编译器后,您需要编译 MEX 文件:

>> cd('C:\libsvm\matlab')
>> make

最后将包含生成的二进制文件的文件夹添加到 MATLAB 搜索路径:

>> addpath('C:\libsvm\matlab')

用一个简单的例子(假数据)测试库:

>> labels = double(rand(10,1)>0.5);
>> data = rand(10,5);
>> model = svmtrain(labels, data, '-s 0 -t 2 -c 1 -g 0.1')

请注意,当前版本的 libsvm 包含用于 Windows 的预编译 64 位 MEX 文件。二进制文件位于C:\libsvm\windows\*.mexw64(将它们复制到上面的matlab 子文件夹)

【讨论】:

非常感谢,它适用于 Windows 操作系统。你能帮我在 Mac OS 上运行同样的东西吗? @Amro 添加更多有关测试的详细信息,因为我遇到了选项-b 即概率的问题。结果显示所有测试的 5 个类之间的概率分布相同。【参考方案2】:

对我来说,我不需要重新编译 libsvm 文件(它确实导致了 .net 框架和 windows SDK 的一些问题)我只使用了已经编译的文件并按照提到的步骤将它们添加到新文件夹@ 987654321@ 减去制作步骤。

总结一下:

1- 我认为您需要在“C:\Program Files\MATLAB\R2014b\toolbox\”下创建“libsvm”文件夹。

2- 然后将 *.mexw64 文件从“libsvm-3.21\windows”文件夹复制到新文件夹。

3- 最后通过单击主页中的设置路径按钮并添加路径为“C:\Program Files\MATLAB\R2014b\toolbox\libsvm”的新文件夹,将您刚刚创建的 libsvm 文件夹添加到 matlab bath

【讨论】:

以上是关于如何在 MATLAB 中运行 libsvm?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中移植 MATLAB libSVM 参数

如何将 MATLAB libsvm 模型复制到 android 应用程序文件夹

如何在 Matlab 中为 libSVM 的 nu-SVM 使用变量而不是 nu 参数的数量?

如何在matlab里安装libsvm包

如何设置 LIBSVM Matlab 接口?

如何在 LibSVM 中实现十折交叉验证