以前、データの正規化にはいろいろな方法があることを述べました。
数量の正規化:方法の違いは何を意味するか? - jnobuyukiのブログ
いろいろな正規化をやってくれるコマンドにR言語のscale()があります。
この関数は、何も考えずに使ってもそれなりに動きます。
しかし、引数として含まれるパラメータを利用すると、もっと便利です。
scale()の引数
scaleには3つの引数があります。
1. 行列(matrix)オブジェクト: ここに当てはめた変数を正規化します。
2.center: パラメータの値として3種類あります。
- TRUE: デフォルトの値です。行の平均値を全てのケースから引きます。
- FALSE: 引き算をしません。
- 数値ベクトル: 数値ベクトルの値をケースのそれぞれから引きます。
3. scale: centerと同様3種類の設定が可能です。
- TRUE: デフォルトの値です。変数のSDでケースを割ります。
- FALSE: 割り算なしになります。
- 数値ベクトル: 数値ベクトルの値でケースのそれぞれを割ります。
標準偏差を考慮した正規化
標準偏差を考慮した正規化は次のように書くことができます。
#変数の定義 a<- seq(1:10) #正規化 scale(a) #引数を明示する場合 scale(a, center = TRUE, scale = TRUE)
最小値を0、最大値を1とする正規化
#変数の定義 b <- seq(from = 5, to = 25, by = 5) #最小値 b_min <- min(b) #最大値 b_max <- max(b) #正規化 scale(b, center = b_min, scale = (b_max - b_min))
カテゴリー変数を数値変換後、中心化する場合
#変数の定義 c <- c(0,0,0,0,0,1,1,1,1,1) #数値の中心化 scale(c, center = TRUE, scale = FALSE)