Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144927
  • 博文数量: 22
  • 博客积分: 2035
  • 博客等级: 大尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 14:30
个人简介

那啥,那谁,就这样吧

文章分类

全部博文(22)

文章存档

2010年(1)

2009年(21)

分类:

2009-06-19 09:31:08

LIBSVM中的归一化问题,libsvm中的归一化其实分为两部分,一个是训练样本的归一化,另外一个是测试样本的归一化,按照2.89所提供的windows下的svm-scale.exe来做的.其中该程序的代码在2.89vc版本的根目录下.
其中svm-scale.exe对训练样本进行归一化的时候,用到的参数行是这样的
-s scale表示的是将训练得到的一些参数存入scale中,相应的,-r scale是导出这些参数
我们可以看看scale中的数据
这里的开始为1的地方往后,每行有两个值,这两个值是训练样本中,属性列1所有数据的最大值和最小值,本文测试中用到了8个属性列,因此有八行最值.
而训练的时候就是寻找这些值,从训练样本中.预测使则是根据这些值来归一化数据.
再来看看归一化的公式.
 
这个是主要的执行代码,y_lower和y_upper本来为浮点数的最值,但是程序中,至少本文中用到的是-1和1.
y_max和y_min就是上边scale中的某一属性列的最大值和最小值.
因为训练一旦结束,按照程序中的机理,scale中各属性列的最值也就确定了,不再变化,这样就要求训练样本必须完全,否则如果某一列最值并不是实际数据中的最值,可能导致归一化后的数据并不再[-1,1]之间.
 
 
 
阅读(9092) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~