matlab2016a中安装libsvm3.22工具箱(win10)
最近做数据处理用到了SVM分类算法,这里要感谢台大cjlin编写的libsvm工具箱。但在安装libsvm3.22(最新版)期间遇到诸多困难,我在网络上查找了一些教程和文章最终得以解决。现将该工具箱的安装及调试的相关总结分享,希望能帮助需要的人。
操作方法
- 01
下载最新的libsvm3.22安装包,解压后保存至MATLAB2016的toolbox文件夹中,我的是保存在D:\program files\MATLAB\R2016a\toolbox下面。但是该工具箱需要编译才能使用,电脑需要安装相应的编译器(compiler)也就是SDK7.1。 安装SDK是一件非常头疼的事,尤其是在win10系统下,需要静下心一步一步来。
- 02
下载SDK的方式分两种,一种是用网络安装包;第二种是下载程序安装镜像文件(64位)大家可以根据实际情况下载。 如果直接安装会出现系统中.NET framework版本超过4.0的错误,导致无法安装SDK,需要在系统中做一些调整。
- 03
卸载系统中所有超过.NET framework 4.0的版本。具体方法是在控制面板的卸载程序中点击“启用或关闭Windows功能”,取消.NET framework 4.6高级服务并确定。在所有安装结束后记得恢复。 如果以为这就完了,你就too young too simple了,之后的步骤会比较复杂。
- 04
将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version 和 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version里NET Framework的版本都修改为 4.0.30319。 网上很多教程中都写很粗略,这里仔细说明一下。一般win10系统中该注册表中都会有1033和2052两个文件夹,里面的Version都需要修改。敲黑板!外层的Client和Full文件夹中的Version也要同样修改,也就是说要修改6处(画小红圈)的版本号。 修改前记下原本的Version号,完成安装后需要全部改回去。
- 05
有同学会发现上一步中的版本号无法修改,这是因为权限的问题。由于涉及隐私我就不截图了,在这里简单说一下。 右击注册表中相应的文件夹点击“权限”-“高级”-“所有者更改”(位于最上面)-“高级”-“立即查找”- 列表中选择“Administrators”(根据自身情况) - “确定”- 选中“Administrators”点击编辑 - 勾选“完全控制”和“读取”,确定后就可以正常修改版本号了。。。
- 06
根据网上经验如果系统中有Visual c++ 2010 x86 redistributable和Visual c++ 2010 x64 redistributable 请一并卸载。 这时就可以顺利通过步骤2中的安装包安装SDK7.1了。记得安装完成后将之前对系统的修改复原。
- 07
这时候回到Matlab,将当前路径设置为D:\program files\MATLAB\R2016a\toolbox\libsvm-3.22\libsvm-3.22\matlab并在set sub path中保存路径。在matlab命令行窗口中输入 mex -setup(mex后有空格),结果如图,这时其实并没有编译成功,我认为大概是由于新版libsvm工具箱的问题,这种情况网上教程大多没有提及。
- 08
这时需要用手工方法完成编译,维持上述当前路径,在命令行窗口中输入make,运行同时用资源管理器打开当前路径,会发现在make运行结束后该文件夹中会生产4个后缀为“ mexw64”的文件,将其复制粘贴至D:\program files\MATLAB\R2016a\toolbox\libsvm-3.22\libsvm-3.22\windows中替换原来的文件。记得在Preference->General中更新一下才能使用,这时手工编译完毕。
- 09
可以通过工具箱自带的数据heart_scale验证工具箱是否安装成功。 与老版本不同新版的libsvm3.22不可以用load加载heart_scale,在这里推荐用libsvmread加载数据。特别要指出libsvm3.22中的svmpredict为三项输出,之前版本为两项输出,执行一些旧程序时要注意修改。 在命令行窗口中输入: >> [heart_scale_label,heart_scale_inst] =libsvmread('heart_scale'); >> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07'); >> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model); 输出结果如图 至此libsvm3.22工具箱安装调试完毕! P.S. 如果运行《神经网络43个案例》中第16章的内容,会出现缺少rep函数的现象,安装S大学的gatbx工具箱,用ren *.M* *.m语句建立bat文件更改后缀大小写后保存至toolbox即可正常使用。