close

進行資料分析前,資料正規化經常是一個必要的步驟。此時若能留意R 的行導向特性,當可
事半功倍。例如:欲對下列三行變數做最大-最小正規化

> (x <- matrix(1:24, 8, 3))

row1  

首先以先前提過的apply 函數求出各行最小值,

 

> (y <- apply(x, 2, min))

row2  


再求出各行最大值,


> (z <- apply(x, 2, max))

row3  


y 與z 看起來像是列向量,實際上它們是行向量!因此x 須先轉置(transpose),才能將各行剪
去其最小值。


> t(x) - y

row4  

 

讀者可試著輸入x 未轉置的指令,結果是x 減去[1 9 17 1 9 17 1 9]T,因為y 的長度不及
8,所以R 會將較短向量y 中元素自動重複,直到其長度為8 為止。


> x - y


row5  

我們所要的正規化結果是將(t(x) - y)再除以各行最大值與最小值的差(z – y),


> (t(x) - y)/(z - y)

row6  


再將它轉置就回到原始資料8 列3 行的形式了!


> t((t(x) - y)/(z - y))

row7  


撰文者:
鄒慶士 博士
現任:
北商資訊與決策科學所教授
中華 R 軟體學會理事長
信箱:
vince.tsou@gmail.com

arrow
arrow

    CARS 發表在 痞客邦 留言(0) 人氣()