在 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)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Fink 在 Mac 上安装 GNU Octave?