如何设置 LIBSVM Matlab 接口?

Posted

技术标签:

【中文标题】如何设置 LIBSVM Matlab 接口?【英文标题】:How to set up LIBSVM Matlab interface? 【发布时间】:2012-12-06 21:37:24 【问题描述】:

我在将 LibSVM 实现到 MATLAB 时遇到问题。 我正在使用 MATLAB R2009a(我也有最新版本 R2012b,但我不使用那个) 我将 LibSVM 包 libsvm-3.14 下载到我的 Windows 7 PC 中,MATLAB 和 OCTAVE 接口结合在一起。

我提取了我下载的文件夹。其中,您可以在下面看到该文件夹​​的打印屏幕。

我应该将我的 libsvm-3.14 提取文件夹放在哪里?我应该把它放在我安装在目录中的 MATLAB 的“bin”文件夹下吗?

C:\Program Files\MATLAB\R2009a\bin

我这样做了,但是没有成功。如果您清楚地帮助我,我将不胜感激。刚看了README文件,看不懂,网上也没有其他说明。

【问题讨论】:

【参考方案1】:

对于那些有重大编译器问题的人,我想我会留下一些关于安装编译器主题的额外信息。这是一个令人沮丧的问题,我最终联系了 MATLAB 寻求帮助。我会在上面的帖子中发表评论,但我没有足够的“代表”所以这里是:

我无法安装 Microsoft Windows SDK 7.1,无论是通过 Microsoft Visual Studio 2010 还是其他方式。我发现这是因为我安装了某个版本的 Microsoft Visual (版本 10.0.04 ......对我来说是问题的原因)。解决方法是卸载 Visual,独立安装 SDK 7.1,然后重新安装 Visual。这个过程在下面的链接中有更详细的描述:

http://www.mathworks.com/matlabcentral/answers/95039-why-does-the-sdk-7-1-installation-fail-with-an-installation-failed-message-on-my-windows-system

也可能是您安装了编译器,但直到 MATLAB“找到”它才被识别。重新安装后发生在我身上。要检查您是否拥有正确的编译器并“找到”它,请运行 mex.getCompilerConfigurations('Any','Installed') 以获取完整列表。然后使用 SDK 7.1 执行 mex -setup,选择 C/C++ 版本而不是 FORTRAN。

我知道这个问题已经得到解答,但希望这可以帮助遇到同样困境的人。

【讨论】:

【参考方案2】:

在@axeoth 的帮助下,这是解决方案。我按照提取的 libsvm 包的 matlab 子文件夹中的说明文件进行操作。我下载并安装了 Microsoft Visual Studio 2010 并在 MATLAB 的命令窗口上编写了“mex -setup”来为 mex 选择合适的编译器(我在 32 位 PC 中使用 MATLAB R2012b,所以我在此链接 http://www.mathworks.com/support/compilers/R2012b/win64.html 中找到了支持的编译器)之后,我按照@axeoth 的指示进行操作。我将文件夹的名称更改为 ROOT 并将其移至 Documents/MATLAB。我启动了 MATLAB,并在命令窗口中,“一个一个”地在下面写了这些

>> cd C:\Users\HUstat\Documents\MATLAB\ROOT\matlab >> cd matlab >> 制作

然后我复制了在 ROOT/matlab 子文件夹中获得的所有内容。我在 MATLAB/toolbox 文件夹下创建了一个名为 libsvm 的新文件夹,并将所有内容粘贴在那里。然后,我使用 MATLAB R2012b 上的“设置路径”按钮将该 libsvm/ 文件夹添加到 Matlab 路径中。之后我写了“svmtrain”和“svmpredict”,所以我得到了这两个命令的帮助。

【讨论】:

非常感谢。 +1 编译器信息。【参考方案3】:

目前,将该文件夹放在哪里并不重要。您必须从提取的 libsvm 包的 matlab 子文件夹中的源代码编译 Matlab-MEX 文件。

下面,我将调用libsvm-3.14(例如:C:\libsvm-3.14)解压文件夹ROOT(所以下面用C:\libsvm-3.14替换ROOT)。

所以,启动 Matlab,然后在其命令提示符下键入:

cd ROOT
cd matlab
make

现在,在 ROOT/matlab 文件夹中,您应该已经获得了两个 MEX 文件(扩展名为 .mexw32 或 .mexw64)。这些是您将从现在开始使用的文件。除了那些文件(可能还有其他一些生成的库)之外,您可以丢弃其余部分。

根据 Makefile(即 ROOT/matlab/make.m),MEX 文件称为 svmtrain 和 svmpredic(+ 扩展名)。

因此,下一步是在您的 Matlab/toolbox 文件夹下创建一个名为 libsvm/ 的子文件夹,复制其中的两个 MEX 文件,然后将该 libsvm/ 文件夹添加到 Matlab 路径(不是系统的路径,但是你的 Matlab 安装)。

然后,输入:

svmtrain

svmpredict

你应该有这两个功能的帮助(使用)。

【讨论】:

有些东西我不明白。我下载了 libsvm-3.14 并将其解压缩到桌面,然后我将解压缩文件夹的名称“libsvm-3-14”更改为 ROOT。但是我应该在哪里复制这个文件?是MATLAB目录下的“bin”文件夹吗? (对不起,如果这听起来很傻,我对这些术语很陌生) @MuratArat ROOT 是我在帖子中用来指定 libsvm-3-14 文件夹的名称。您不要将它复制到任何地方,让它在那里,只需在我的帖子 ROOT 中替换为指向该 libsvm-3-14 文件夹的实际路径(绝对路径)。我将更新我的答案以明确这一点。 好的,我明白你的意思。为了使事情变得更容易(破折号,点,无论如何)我将提取的文件命名为ROOT,它被放置在桌面上。我启动了 MATLAB,在命令窗口中,我写了你所说的。我收到此错误“错误使用 cd 无法 CD 到 ROOT(名称不存在或不是目录)。”所以我现在不知道该怎么办。 我急需安装。请帮我。如果您愿意,我可以提供更多信息。 其实我的电脑里有编译器,但是除了MATLAB中包含的Lcc之外,MATLAB没有识别这些,尽管这些编译器是MATLAB R2012b支持的。因此,我下载了 Microsoft Visual Studio 2010,它是免费提供的,再次安装并重新安装,以防文件丢失。我重新启动计算机并编写了这个“mex -setup”命令。再次感谢!

以上是关于如何设置 LIBSVM Matlab 接口?的主要内容,如果未能解决你的问题,请参考以下文章

准备我的数据以在 SVM libsvm matlab 中进行训练 [关闭]

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

如何使用 libsvm matlab 固定参数成本和伽玛来提高准确性?

如何在 MATLAB 中运行 libsvm?

如何在matlab里安装libsvm包

如何在 Matlab 中使用 libsvm?