LibSVM使用记录 C++ Visual studio

本文记录了在C++和Visual Studio中使用LibSVM进行模型训练的关键步骤。首先,介绍如何准备问题数据空间prob和模型求解算法参数param。接着,详细解析svm_node数据结构,指出当index为-1时表示样本结束。在填充样本数据和设置y值后,需检查参数无误再进行模型训练,最后保存并加载模型进行预测。
摘要由CSDN通过智能技术生成

记录LIbSVM使用的关键。不是教程,教程可以参考:https://blog.csdn.net/shayne000/article/details/88756447
从LIbSVM的训练模型函数说起:

svm_model* svmModel = svm_train(&prob, &param);

这是一个模型训练函数,训练成功之后会产生一个SVM模型。
所以前期工作就是对实现连个参数:&prob, &param
prob相当于问题数据空间,param相当于模型求解的算法参数
首先看一下参数选项,具体的解释在说明文档里面有:

struct svm_parameter
{
	int svm_type;
	int kernel_type;
	int degree;	/* for poly */
	double gamma;	/* for poly/rbf/sigmoid */
	double coef0;	/* for poly/sigmoid */

	/* these are for training only */
	double cache_size; /* in MB */
	double eps;	/* stopping criteria */
	double C;	/* for C_SVC, EPSILON_SVR and NU_SVR */
	int nr_weight;		/* for C_SVC */
	int *weight_label;	/* for C_SVC */
	double* weight;		/* for C_SVC */
	double nu;	/* for NU_SVC, ONE_CLASS, and NU_SVR */
	double p;	/* for EPSILON_SVR */
	int shrinking;	/* use the shrinking heuristics */
	int probability; /* do probability estimates */
};

然后看一下问题数据空间

struct svm_problem
{
	int l;//样本数量
	double *y;//样本Y值是一个以为数组
	struct svm_node **x;//样本特征值是一个二维数据,一个svm_node的一维数组代表一个样本
};

接下来看看svm_node的数据结构:

struct svm_node
{
	int index;//样本特征索引
	double value;//样本特征值
};

当index = -1 的时候表示这个样本结束

所以首先填充一维的svm_node数组作为样本,然后将很多个样本放到struct svm_node **x;,同时也要把y复制还有样本数量赋值。

在调用训练函数之前还要先检查一下参数是否有问题

	//检查参数设置是否错误;
	if (svm_check_parameter(&prob, &param) != NULL)
	{
		std::cout << svm_check_parameter(&prob, &param) << std::endl;
	}

如果没有问题就是保存模型,然后加载模型,然后预测啦

//保存模型
svm_save_model(modelFileName.c_str(), svmModel);
//加载模型
svm_model* svmModel = svm_load_model(modelFileName.c_str());

//单样本预测(也有成组的预测)
//建立一个待预测样本
svm_node* input = new svm_node[FEATUREDIM + 1];
....
//预测
int predictValue = svm_predict(svmModel, input);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值