2011-05-06 83 views
1

将线性内核SVM中使用的特征向量规格化的正确方法是什么?看看LIBSVM,它看起来像是通过将每个特征重新缩放到单个标准上/下范围来完成的。但是,PyML似乎没有提供以这种方式扩展数据的方法。相反,可以选择按照长度对矢量进行归一化处理,将每个特征值的平均值移动,同时用标准偏差重新缩放等。svmlib缩放与pyml标准化,缩放和转换

我正在处理大多数功能都是二进制的情况,除了少数数字。

回答

0

我不是这方面的专家,但我相信通过减去其均值并除以标准偏差来对每个特征向量进行居中和缩放是标准化SVM使用的特征向量的典型方法。在R中,这可以通过比例函数来完成。

另一种方式是每个特征向量变换到[0,1]区间:

(x - min(x))/(max(x) - min(x)) 

也许一些特征可以从日志改造惠若分布非常scewed,但这将改变分布的形状也不仅仅是“移动”它。

我不确定你在SVM设置中获得了什么,通过像PyML那样通过它的L1或L2范数对矢量进行归一化来实现它的标准化方法。我想二元特征(0或1)不需要标准化。

+0

v = [stats.contr,stats.corrm,stats.energ,stats.entro,stats.homom]; o =(v_min(v))/(max(v)-min(v));我试过这个代码。但是这些值仍然不在[0,1]的范围内。先生,我的编码有错吗? – Gomathi 2012-03-22 16:00:13

+0

我不明白你的第一个陈述应该做什么。 v应该是一个包含特征值的数字的向量。 – Tony 2012-04-10 11:57:15