目标在stm32上实现svm实时训练与分类,特征向量为10维向量,分类结果为多目标分类;
1.代码分解与抽取
libsvm源代码文件有5个:svm-train.c,svm-predict.c,svm-scale.c,svm.h,svm.cpp;svm-train.c是训练样本工具的代码,svm-predict.c是预测工具的代码,svm-scale.c是归一化数据工具的代码,svm.h是头文件,svm.cpp是类的实现代码,代码文件svm-train.c、svm-predict.c、svm-scale.c分别与svm.h和svm.cpp编译就可以得到训练工具、预测工具、归一化工具软件。
下面以svm-train.c开始分析代码:
代码执行了如下操作:
(1)解析命令行,配置训练参数,获取输入样本文件名、输出模型文件名;
(2)读取输入文件至训练样本类中
(3)检测训练参数是否正确
(4)是否进行交叉验证,否的话调用svm_train函数对样本进行训练;保存训练结果至文件中;
下面开始分析svm.h中相关数据类型:
(1).svm类型:C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR, NU_SVR
-s svm类型:SVM设置类型(默认0)
0 – C-SVC:C-支持向量分类机;参数C为惩罚系数,C越大表示对错误分类的惩罚越大,适当的参数C对分类Accuracy很关键。
1 –v-SVC:v-支持向量分类机;由于C的选取比较困难,用另一个参数v代替C。C是“无意义”的,v是有意义的。(与C_SVC其实采用的模型相同,但是它们的参数C的范围不同,
libsvm移植至stm32进行训练与分类
最新推荐文章于 2024-06-11 14:34:13 发布