svm 分类算法 一、 数据源说明 1、 数据源说远和理解: ticeval2000
txt: 这个数据集是需要预测( 4000 个客户记录)的数据集
它和ticdata2000
txt 它具有相同的格式,只是没有最后一列的目标记录
我们只希望返回预测目标的列表集,所有数据集都用制表符进行分隔
共有4003(自己加了三条数据),根据要求,用来做预测
tictgts2000
txt: 最终的目标评估数据
这是一个实际情况下的目标数据,将与我们预测的结果进行校验
我们的预测结果将放在result
txt 文件中
数据集理解:本实验任务可以理解为分类问题,即分为2 类,也就是数据源的第86 列,可以分为0、 1 两类
我们首先需要对ticdata2000
txt 进行训练,生成model, 再根据model进行预测
2、 数据清理 代码中需要对数据集进行缩放的目的在于: a、避免一些特征值范围过大而另一些特征值范围过小; b、 避免在训练时为了计算核函数而计算内积的时候引起数值计算的困难
因此,通常将数据缩放到 [ -1,1] 或者是 [0,1] 之间
二、 数据挖掘的算法说明 1、 svm 算法说明 2、 实现过程 在源程序里面,主要由以下2 个函数来实现: (1) struct svm_model *svm_train(const struct svm_problem *prob, const struct svm_parameter *param); 该函数用来做训练,参数prob, 是 svm_problem 类型数据,具体结构定义如下: struct svm_problem //存储本次参加运算的所有样本(数据集),及其所属类别
{ int n; //记录样本总数 double *y; //指向样本所属类别的数组 struct svm_node **x; //