如何在MATLAB中运行libsvm?

9

如何在MATLAB中使用libsvm

我已经下载了这个库,并将其提取到C:\Program Files\MATLAB\R2012a\toolbox\,但是我不知道如何在MATLAB中使用它。


1
但是如何编译MEX文件呢?我尝试了这个链接(https://dev59.com/k2zXa4cB1Zd3GeqPR0Y-?rq=1),但在Matlab中出现错误。我也尝试了mex -setup,但是出现了“Error using mex (line 206) Unable to complete successfully.”的错误提示。 - user2157806
我正在使用64位版本的Matlab,并运行mex.getCompilerConfigurations('Any','Installed'),输出结果为: 1x0空的mex.CompilerConfiguration 包:mex 属性: 名称 制造商 语言 版本 位置 细节 方法 - user2157806
对于64位Windows/MATLAB,您需要使用Visual Studio专业版(安装了“X64编译器和工具”组件),或者使用免费提供的VS2010 Express版以及最新的Windows SDK。这在我上面评论中链接的页面中有解释。 - Amro
我是Matlab的初学者,我仍然不明白libsvm已经在包中提供了预编译的64位MEX文件这一意思。我已经安装了Microsoft Windows SDK 7.1和Microsoft Visual C++ 2010 Professional。现在我该怎么办? - user2157806
1
先尝试更简单的方法。假设您已经将libsvm提取到了C:\libsvm中。首先通过运行addpath('C:\libsvm\windows')告诉MATLAB在哪里找到库,以便在搜索路径中使用编译好的MEX文件。现在,您可以使用类似以下的内容测试函数:svmtrain(double(rand(10,1)>0.5),rand(10,5),'-c 1 -g 0.1') - Amro
显示剩余8条评论
2个回答

30

请在自己选择的目录中下载并提取libsvm,比如说C:\libsvm

根据C:\libsvm\matlab\README文件所述,首先要确保已安装支持的C/C++编译器。注意,在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子文件夹中)。

1
非常感谢,这对于Windows操作系统对我很有帮助。您能否帮助我在Mac操作系统上运行同样的东西? - Khalid Usman
@Amro请添加有关测试的更多详细信息,因为我在使用选项“-b”即概率时遇到了问题。结果显示所有测试中5个类别的概率分布相同。 - kAmol

2
对我而言,我不需要重新编译libsvm文件(这会导致一些与.net框架和Windows SDK相关的问题)。我只使用已经编译好的文件,并按照此处提到的步骤将它们添加到一个新文件夹中(减去make步骤)
因此,总结如下:
1- 我认为您需要在"C:\Program Files\MATLAB\R2014b\toolbox\"下创建"libsvm"文件夹。
2- 然后将"libsvm-3.21\windows"文件夹中的*.mexw64文件复制到新文件夹中。
3- 最后,通过在主页上点击设置路径按钮并添加路径为"C:\Program Files\MATLAB\R2014b\toolbox\libsvm"的新文件夹,将刚刚创建的libsvm文件夹添加到matlab路径中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接