参考:libsvm的C++使用详细例子(采用TXT格式的数据)
libsvm在vs2017下使用c++实例详解(含c++代码)
1 环境搭建
1.1 libsvm官网下载最新版本(本文使用libsvm3.24)
1.2 按照要求格式制作数据集
训练集和测试集要放在与工程的vcxproj文件同目录下。
训练集:
测试集:
2 训练
2.1 在vs2017中新建一个空白工程,接着导入svm.h、svm.cpp、svm-train.c。
2.2 配置参数
右键工程——属性——调试——命令参数,添加训练集文件名称(包后缀)和训练后得到的模型文件名称(不包后缀)。
2.3 在svm-train.c下的main函数的return语句前加上一句system(“pause”); 防止代码一闪而过。此外,还需要改动gamma的值,把0改为特征数量的倒数。
2.4 直接编译会发现编译出错,这时候需要改动两个地方:①右键工程——Properties(属性)——C++——Preprocesser(预处理器)——Preprocesser Definitions(预处理器定义)中添加_CRT_SECURE_NO_WARNINGS ②把strdup改为_strdup。
2.5 运行结果
3 测试
3.1 移除工程中的svm-train.c,导入svm-predict.c。
3.2 配置参数
右键工程——属性——调试——命令参数,添加测试集文件名称(包后缀)、训练后得到的模型文件名称(不包后缀)、测试结果文件名称(包后缀)。
3.3 在svm-predict.c下的main函数的return语句前加上一句system(“pause”); 防止代码一闪而过。
3.4 运行结果