【问题标题】:svmlib scaling vs. pyml normalization, scaling, and translationsvmlib 缩放与 pyml 规范化、缩放和转换
【发布时间】:2011-08-20 12:46:32
【问题描述】:

对用于线性核 SVM 的特征向量进行归一化的正确方法是什么?

看看 LIBSVM,它看起来就像是通过将每个功能重新缩放到一个标准的上限/下限范围来完成的。但是,PyML 似乎没有提供一种以这种方式扩展数据的方法。取而代之的是,有一些选项可以按向量的长度对向量进行归一化,按平均值移动每个特征值,同时按标准差重新缩放,等等。

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

【问题讨论】:

    标签: scale svm libsvm normalize pyml


    【解决方案1】:

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

    另一种方法是将每个特征向量转换为[0,1]范围:

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

    如果分布非常倾斜,也许某些特征可以从对数转换中受益,但这也会改变分布的形状,而不仅仅是“移动”它。

    我不确定通过向量的 L1 或 L2 范数对向量进行归一化,你在 SVM 设置中获得了什么,就像 PyML 使用其归一化方法所做的那样。我猜二进制特征(0 或 1)不需要归一化。

    【讨论】:

    • v=[stats.contr,stats.corrm,stats.energ,stats.entro,stats.homom]; o=(v - min(v)) / (max(v) - min(v));我试过这段代码。但是这些值仍然不在 [0,1] 范围内。先生,我的编码有什么问题吗?
    • 我不明白你的第一句话应该做什么。 v 应该是一个包含特征值的数字向量。
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2011-10-31
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多