数据标准化,是将数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化;
x=(x-min)/(max-min)
>data <- read.csv('1.csv', fileEncoding='utf-8')
> data
class name score
1 一班 朱志斌 120
2 一班 朱凤 122
3 一班 郑丽萍 140
4 一班 郭杰明 131
5 一班 许杰 122
6 二班 郑芬 119
7 二班 林龙 96
8 二班 林良坤 135
9 二班 黄志红 105
10 三班 方小明 114
11 三班 陈丽灵 115
12 三班 方伟君 136
13 三班 庄艺家 119
> data.scale <- (data$score-min(data$score))/(max(data$score)-min(data$score))
> newData <- data.frame(data, data.scale)
> newData
class name score data.scale
1 一班 朱志斌 120 0.5454545
2 一班 朱凤 122 0.5909091
3 一班 郑丽萍 140 1.0000000
4 一班 郭杰明 131 0.7954545
5 一班 许杰 122 0.5909091
6 二班 郑芬 119 0.5227273
7 二班 林龙 96 0.0000000
8 二班 林良坤 135 0.8863636
9 二班 黄志红 105 0.2045455
10 三班 方小明 114 0.4090909
11 三班 陈丽灵 115 0.4318182
12 三班 方伟君 136 0.9090909
13 三班 庄艺家 119 0.5227273
注意scale( )标准化函数跟0-1标准化的区别。标准化的方法很多,根据实际数据分析需求进行选择。
> scale<-scale(data$score)
> scale
[,1]
[1,] -0.0865256
[2,] 0.0741648
[3,] 1.5203783
[4,] 0.7972716
[5,] 0.0741648
[6,] -0.1668708
[7,] -2.0148103
[8,] 1.1186523
[9,] -1.2917035
[10,] -0.5685968
[11,] -0.4882516
[12,] 1.1989975
[13,] -0.1668708
attr(,"scaled:center")
[1] 121.0769
attr(,"scaled:scale")
[1] 12.44629
> View(data)
> mean(data$score)
[1] 121.0769
> sd(data$score)
[1] 12.44629