在 Octave 上使用 libsvm (Windows)

Posted

技术标签:

【中文标题】在 Octave 上使用 libsvm (Windows)【英文标题】:Using libsvm on Octave (Windows) 【发布时间】:2012-10-25 22:56:39 【问题描述】:

我想在 Octave 上使用 libsvm(在 Windows 平台上)。如果我从自述文件和互联网上的几十篇文章中理解得很好,我不必制作或编译任何东西,只需将 mexw32 和 mexw64 文件复制到我的 Octave 工作目录。如果我这样做,什么也不会发生,当我想运行我的示例代码时,错误与以前一样:

error: `libsvmread' undefined near line 7 column 11

我也尝试在 Octave 命令提示符下运行 make,但随后出现其他错误:

warning: unable to find mkoctfile in expected location: `c:\Program Files (x86)\
Octave-3.6.2\bin\mkoctfile-3.6.2'
warning: mkoctfile exited with failure status

但是在给定的目录中一个 mkoctfile-3.6.2.exe...

我也已经尝试过编辑octaverc 文件...但没有帮助。

知道如何正确安装 libsvm 吗?

【问题讨论】:

【参考方案1】:

根据 LIBSVM 发行版的matlab 子文件夹中的 README 文件(我查看了 3.13),包含的二进制文件仅适用于 Windows 上的 64 位版本的 Matlab。这些二进制文件绝对不适用于我在 Windows 上的 Octave 版本!为了让 LIBSVM 与 Octave 一起工作,我们必须构建 Octave 特定的 .mex 文件并将它们放在 Octave 可以找到它们的地方。

我在http://flyingpies.wordpress.com/2012/11/20/getting-libsvm-to-work-with-octave-on-windows/ 整理了该过程的演练。简而言之,步骤是:

    确保您拥有使用 Visual Studio 构建的 Windows 版本的 Octave(即不是 cygwin 或 mingw 版本。)我确信这些其他版本可以采取类似的步骤,因为我没有尝试过它们出来。

    获取 Visual Studio 2010 或 2012 的副本。两者都适合我。你只需要那个大包中的命令行 C 编译器和链接器。 express version of VS is available for free from Microsoft,虽然我没试过。

    在命令提示符窗口中,运行 Visual Studio 的 Visual C 文件夹中的 vcvarsall.bat 批处理文件,为编译准备好环境。

    将 Octave bin 文件夹添加到您的路径(在我的机器上为C:\Program Files (x86)\Octave-3.6.2\bin)。这解决了您遇到的“找不到 mkoctfile”问题。

    编辑 Octave 的 math.h 包含文件以引用 Visual Studio 的 math.h 的正确位置。我不得不将 c:\Program Files (x86)\Octave-3.6.2\include\math.h 的第 74 行从 c:/Program Files/Microsoft Visual Studio 10.0/VC/include/math.h 更改为 c:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include/math.h

    在使用 vcvarsall 和路径启动的同一命令提示符窗口中,启动 Octave,导航到 LIBSVM 发行版的 matlab 子文件夹,然后运行 ​​make 命令。这将执行该文件夹中的 make.m 文件,该文件将构建 .mex 文件。

    将 .mex 文件复制到 Octave 可以找到它们的文件夹中。我把它们放在C:\Program Files (x86)\Octave-3.6.2\lib\octave\3.6.2\site\oct\i686-pc-mingw32

此时,如果您启动 Octave,LIBSVM 接口命令应该可用。例如,svmtrain 命令应该运行。

【讨论】:

以上是关于在 Octave 上使用 libsvm (Windows)的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 LIBSVM Matlab 接口?

如何使用 Fink 在 Mac 上安装 GNU Octave?

如何在 Octave 上设置 VLFEAT?

用于 jupyter 的 Octave 内核无法在 Windows 10 上运行

如何在mac上配置Octave以获取上一个命令

在 Eclipse IDE 中在 C 上使用 LIBSVM 时出错