Rのscale 関数で標準化
はじめに(標準化とは)
標準化とはデータの平均が0、標準偏差が1になるように変換すること。実際の操作としてはデータの平均を $\bar{x}$ 、標準偏差を $s$ と置くと、以下の計算をしていることになる。
$$x_{new} = \frac{x-\bar{x}}{s}$$
R で標準化する場合にはscale
関数を使う。
ランダムで生成した正規分布のデータに対して
平均50、分散が10の正規分布に伴うデータを生成する。
dat <- rnorm(n=1000, mean=50, sd=10)
dat.mean <- mean(dat)
dat.sd <- sd(dat)
print(c(dat.mean, dat.sd))
hist(dat)
[1] 49.65276 10.17034
これにscale
関数を適応してみると、
dat.new <- scale(dat) #scale関数で標準化する
dat.new.mean <- mean(dat.new)
dat.new.sd <- sd(dat.new)
print(c(dat.new.mean, dat.new.sd))
hist(dat.new)
[1] 1.5824e-16 1.0000e+00
となり、平均0、標準偏差1のデータになっている。
おまけ(iris データで標準化)
かの有名なiris dataでも標準化してみる。今回はlabelを無視してすべてのデータを一気に標準化してしまう。
iris.data <- iris[,-5] #Speacies の列を削除
iris.data.mean <- sapply(iris.data, mean)
iris.data.sd <- sapply(iris.data, sd)
print(c(iris.data.mean, iris.data.sd)) #平均と標準偏差を出力
split.screen(figs=c(2, 2)) #四つの図を書く準備
screen(1)
hist(iris.data[,1], xlab=colnames(iris.data)[1])
screen(2)
hist(iris.data[,2], xlab=colnames(iris.data)[2])
screen(3)
hist(iris.data[,3], xlab=colnames(iris.data)[3])
screen(4)
hist(iris.data[,4], xlab=colnames(iris.data)[4])
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width
5.8433333 3.0573333 3.7580000 1.1993333 0.8280661 0.4358663 1.7652982 0.7622377
これを標準化する。
iris.data.new <- as.data.frame(scale(iris.data)) #標準化+データフレーム化(値がmatrixで返ってくるので。)
iris.data.new.mean <- sapply(iris.data.new, mean)
iris.data.new.sd <- sapply(iris.data.new, sd)
print(c(iris.data.new.mean, iris.data.new.sd)) #平均と標準偏差を出力
split.screen(figs=c(2, 2)) #四つの図を書く準備
screen(1)
hist(iris.data.new[,1], xlab=colnames(iris.data.new)[1])
screen(2)
hist(iris.data.new[,2], xlab=colnames(iris.data.new)[2])
screen(3)
hist(iris.data.new[,3], xlab=colnames(iris.data.new)[3])
screen(4)
hist(iris.data.new[,4], xlab=colnames(iris.data.new)[4])
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width
-4.484318e-16 2.034094e-16 -2.895326e-17 -3.663049e-17 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00
一回の操作ですべての項目についてまとめて標準化できる。
Author And Source
この問題について(Rのscale 関数で標準化), 我々は、より多くの情報をここで見つけました https://qiita.com/ryamamoto0406/items/ff8afd15a771c474a958著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .