VS中调用libsvm的步骤
来源:互联网 发布:洛奇英雄传n卡设置优化 编辑:程序博客网 时间:2024/06/16 10:38
VS中调用libsvm的步骤:
第一部分:先把 VS 工程的框架建好
第二部分:工程里包含主函数的 cpp 文件要怎么写
第三部分:把 libsvm 工具箱移植到 MFC 中进行使用
第四部分:在本文代码中能够正确运行的数据格式
转载的地址:http://blog.csdn.net/u014691453/article/details/40393137/
资源地址:如何在Visual Studio(VS)里使用libsvm工具箱(与博文相关的代码包)
第一部分:先把 VS 工程的框架建好
之前一直都是在 matlab 里面使用这个 libsvm 工具箱,也曾经有一段时间在 python 里面使用过,刚接触的时候还在 cmd 控制台上面使用过,libsvm 的编写者真的很赞,打开此工具箱我们看到的情景是这样的:
对于Java、matlab、python、windows 都有相对应的文件夹,文件夹里面的内容和上图中的这个 readme 就可以帮助你在以上四种情况下使用了。
那在 VS 里该怎么使用呢?
首先,我们先建立一个Win32控制台项目,起名为 MM ,如下步骤:
然后,把 libsvm 文件夹里的这几个文件(如下图),都拷贝到 MM 项目的文件夹(如下下图)里去,以备后续使用。
然后,在 MM 项目里,我们把 svm.h 和 svm.cpp 分别添加到头文件和源文件里面去,如下图:
然后,在源文件里,右键——新建项:MM.cpp
接下来是第二部分
第二部分:工程里包含主函数的 cpp 文件要怎么写
MM.cpp也就是上面说的包含主函数的 cpp 文件,我们最终要执行的就是它。
首先,我们先给 MM.cpp 里写好需要用到的头文件,如下:
接下来的内容大致分五部分:
第一:读入训练数据和测试数据
第二:构建参数 param 的结构体(主要目的就是让VS知道你要用的参数都是什么)
第三:构建分类问题 prob 的结构体(主要就是把第一步读入的数据传递给 svm_train 和 svm_predict)
第四:主函数如下
第五:结果展示
第一:读入训练数据和测试数据
首先,在读数据之前,先定义一些变量(整个程序还是主要参考的 libsvm/svm_toy/qt/svm_toy.cpp 这个代码,由于目前我编程能力实在是差,所以一些冗余的代码我都没有删改,仅仅只实现了能够使用libsvm的目的。)
然后,我们先读入训练数据,用来训练模型
接下来,读入测试数据:
第二:构建参数 param 的结构体
然后,训练模型!:包括了构建参数param结构和构建 prob结构。
由于太长了,我上传到 CSDN 下载页面吧,免积分下载。这段代码主要就是参考的 svm_toy.cpp 文件,同学们好好研读。
资源地址:如何在Visual Studio(VS)里使用libsvm工具箱(与博文相关的代码包)
第三:构建分类问题 prob 的结构体
同第二,代码是一起的,我会把整体代码,包括以上写的读入feature和label的代码,发到下载页面
第四:主函数如下
第五:结果展示
等啊等~ 训练结束啦~
接下来就是测试了:
第三部分:把 libsvm 工具箱移植到 MFC 中进行使用
其实在 MFC 中的使用,和libsvm在普通VS 项目中的使用是一样的。
如果你不想在MFC 里训练 model,那么完全可以把在第二部分中训练出来的 model 拷贝到 MFC 的这个项目里面,然后在 测试数据之前,把 model load进去就好了,具体load方式参照我的代码里test()函数里写的内容。
那么在 MFC 的代码里,你就可以把第二部分代码中的 void run() ,即训练模型部分去掉了
注:我就是在 MFC 里使用 libsvm 的时候,发现了 VS2010 和 VS2012 的不同,svm.cpp 和 svm.h 这两个文件里的一些函数,可以在 VS2010 的 MFC 工程里跑的很好,可是到了 VS2012 里就会提示说 “你把 XX 换成 XX_s 会更安全”,是错误而不是警告,所以如果在 VS2012 里面用libsvm的话,需要在svm.cpp 和 svm.h 这两个文件里修改部分函数的表达形式,这个在网上都有解答,可以自行查询。
第四部分:在本文代码中能够正确运行的数据格式
在第二部分给出的资源链接里,我上传的资料里包括我的测试数据,1.txt和1_label.txt 就是test1测试的内容,11.txt 和 11_label.txt 就是test2 测试的内容,如果你要测试你自己的数据,记得在test()代码里更改成你自己数据的名称。
可以使用的数据格式: 大家可以参照我上传的 1.txt,大致如以下:
0.564 0.436 0.675 0.453 0.000 0.345
0.354 0.345 0.456 0.000 0.346 0.645
0.678 0.678 0.866 0.757 0.575 0.867
0.866 0.865 0.856 0.867 0.557 0.754
我的1_label.txt,大致如以下:
1
1
2
2
如以上格式,因为我的数据是之前通过 matlab 处理过的,所以空格位置用的是 ‘\t’ 。
如果你的数据格式和我不一样,只有两条路: 1:改成我这样的数据格式 2:更改代码里读数据这部分的程序,保证读进去的数据是对的就好
或者还有一条路,就是自己按照你的需要重新写代码
http://blog.csdn.net/u014691453/article/details/40393137/
阅读全文
0 0
- VS中调用libsvm的步骤
- Matlab中配置LibSVM的操作步骤
- matlab中调用Libsvm
- matlab中安装Libsvm 步骤
- libsvm中测试最简单的easy.py的步骤
- Windows7 libsvm库中grid.py的使用步骤
- Windows7 libsvm库中grid.py的使用步骤
- 使用libsvm分类的一般操作步骤
- vs中调用mingw编译的linphone
- vs中调用Python的配置
- java类中调用dll的步骤
- LIBSVM中参数的意义
- MATLAB中libsvm的使用
- matlaB中 libsvm的 使用
- Eclipse中调用VS 2012生成的DLL文件,进行调试的步骤。。。[含VS2012中release版本的调试配置]
- 关于Libsvm的使用的一点体会(在C++中调用)
- 模式识别 - libsvm的函数调用方法 详解
- LIBSVM在python下的接口调用
- Java Web架构知识整理——记一次阿里面试经历
- MySQLdump数据库复制到另一台机器
- LeetCode二叉树的层序遍历的输出
- (二)iOS Core Bluetooth 蓝牙 “外设模式”
- 5.元组
- VS中调用libsvm的步骤
- 自定义string
- ROS服务和参数
- 【华为OJ】求最大连续bit数
- 使用Url Rewrite实现网站伪静态
- Media播放(播放音频,录音等)
- github release 功能的使用及问题解决
- jqPaginator到最后一页不显示页数
- 操作系统概念(高等教育出版社,第七版)复习——第十二章:大容量存储器的结构