svm算法实验实验报告

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)structsvm_model*svm_train(conststructsvm_problem*prob,conststructsvm_parameter*param);该函数用来做训练,参数prob,是svm_problem类型数据,具体结构定义如下:structsvm_problem//存储本次参加运算的所有样本(数据集),及其所属类别。{intn;//记录样本总数double*y;//指向样本所属类别的数组structsvm_node**x;//指向一个存储内容为指针的数组};其中svm_node的结构体定义如下:structsvm_node//用来存储输入空间中的单个特征{intindex;//输入空间序号,假设输入空间数为mdoublevalue;//该输入空间的值};所以,prob也可以说是问题的指针,它指向样本数据的类别和输入向量,在内存中的具体结构图如下:图1.1libsvm训练时,样本数据在内存中的存放结构只需在内存中申请n*(m+1)*sizeof(structsvm_node)大小的空间,并在里面填入每个样本的每个输入空间的值,即可在程序中完成prob参数的设置。参数param,是svm_parameter数据结构,具体结构定义如下:structsvm_parameter//训练参数{intsvm_type;//svm类型,intkernel_type;//核函数类型intdegree;/*forpoly*/---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---doublegamma;/*forpoly/rbf/sigmoid*/doublecoef0;/*forpoly/sigmoid*//*thesearefortrainingonly*/doublecache_size;/*inmb制定训练所需要的内存*/doubleeps;/*stoppingcriteria*/doublec;/*forc_svc,epsilon_svrandnu_svr,惩罚因子*/intnr_weight;/*forc_svc权重的数目*/int*weight_label;/*forc_svc权重,元素个数由nr_weight决定*/double*weight;/*forc_svc*/doublenu;/*fornu_svc,one_class,andnu_svr*/doublep;/*forepsilon_svr*/intshrinking;/*usetheshrinkingheuristics指明训练过程是否使用压缩*/intprobability;/*doprobabilityestimates指明是否要做概率估计*/}其中,svm类型和核函数类型如下:设定完这两个参数,就可以直接在程序中调用训练函数进行训练了,该其函数返回一个structsvm_model*svm模型的指针,可以使用svm_save_model(constchar*model_file_name,conststructsvm_model*model)函数,把这个模型保存在磁盘中。至此,训练函数的移植已经完成。(2)doublesvm_predict(conststructsvm_model*model,conststructsvm_node*x);参数model,是一个svm模型的指针,可以使用函数structsvm_model*svm_load_model(constchar*model_file_name),导入训练时保存好的svm模型,此函数返回一个svm模型的指针,可以直接赋值给变量model。参数x,是conststructsvm_node结构体的指针,本意是一个输入空间的指针,但实际上,该函数执行的时候,是从参数x处计算输入空间,直到遇到单个样本数据结束标记-1才结束,也就是说,该函数运算了单个样本中的所有输入空间数据。因此,在调用此函数时,必须先把预测样本的数据按图3.4中的固定格式写入内存中。另外,该函数只能预测一个样本的值,本文需要对图像中的所有像数点预测,就要使用for循环反复调用。该函数返回一个double类型,指...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?