# R中连续神经网络训练中数据的归一化

```df <- "Factor1 Factor2 Factor3 Response
10      10000   0.4     99
15      10200   0       88
11      9200    1       99
13      10300   0.3     120"

normalize <- function(x) {
return ((x - min(x)) / (max(x) - min(x)))
}

dfNorm <- as.data.frame(lapply(df, normalize))

### Keep old normalized values
dfNormOld <- dfNorm

library(neuralnet)
nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=dfNorm, hidden=c(3,4),
linear.output=FALSE, threshold=0.10,  lifesign="full", stepmax=20000)```

```df2 <- "Factor1 Factor2 Factor3 Response
12      10100   0.2     101
14      10900   -0.7    108
11      9800    0.8     120
11      10300   0.3     113"

### Bind all-time data
df <- rbind(df2, df)

### Normalize all-time data in one shot
dfNorm <- as.data.frame(lapply(df, normalize))

### Continue training the network with most recent data
library(neuralnet)
Wei <- nn\$weights
nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=df[1:nrow(df2),], hidden=c(3,4),
linear.output=FALSE, threshold=0.10,  lifesign="full", stepmax=20000, startweights = Wei)```

```normalize <- function(x,min1,max1,row1) {
if(row1>0)
x[1:row1,] = (x[1:row1,]*(max1-min1))+min1
return ((x - min(x)) / (max(x) - min(x)))
}

past_min = rep(0,dim(df)[2])
past_max = rep(0,dim(df)[2])
rowCount = 0

while(1){
df = mapply(normalize, x=df, min1 = past_min, max1 = past_max,row1 = rep(rowCount,dim(df)[2]))
nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=dfNorm, hidden=c(3,4),
linear.output=FALSE, threshold=0.10,  lifesign="full", stepmax=20000)

past_min = as.data.frame(lapply(df, min))
past_max = as.data.frame(lapply(df, max))
rowCount = dim(df)[1]