2011-05-06 84 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