본질적으로 산술을 역순환하면됩니다. x1 = (x0-min)/(max-min)
은 x0 = x1*(max-min) + min
을 의미합니다. 그러나 데이터를 덮어 쓰는 경우 정규화하기 전에 최소값과 최대 값을 저장하는 것이 좋습니다 (그렇지 않으면 주석에 @MrFlick이 지적한대로).
설정 데이터 :
가
dd <- data.frame(x=1:5,y=6:10)
표준화 :
이
normalize <- function(x) {
return ((x - min(x))/(max(x) - min(x)))
}
ddnorm <- as.data.frame(lapply(dd,normalize))
## x y
## 1 0.00 0.00
## 2 0.25 0.25
## 3 0.50 0.50
## 4 0.75 0.75
## 5 1.00 1.00
비정규 :
minvec <- sapply(dd,min)
maxvec <- sapply(dd,max)
denormalize <- function(x,minval,maxval) {
x*(maxval-minval) + minval
}
as.data.frame(Map(denormalize,ddnorm,minvec,maxvec))
## x y
## 1 1 6
## 2 2 7
## 3 3 8
## 4 4 9
## 5 5 10
영리 normalize
기능 속성과 결과에 스케일링 변수를 첨부 할 것 (을 참조하십시오 ?scale
기능 ...)
그럼 원하는 출력은 무엇입니까? 왜 "정규화 된"버전을 다른 변수에 저장하지 않는 것이 좋을까요? 이 수식을 사용하여 데이터를 고유하게 비표준화할 수있는 방법은 없습니다. 'c (0,10)'은'c (0,1)'로 표준화되지만'c (3, 17)'도 정규화됩니다. 원래 값이 무엇인지 말할 수는 없습니다. – MrFlick
원본 데이터는 예를 들어 [(3,8,10,11,22,28), (4,17,20,21,26,40), (4,5,13,16,18,27)] – myID33
댓글에 남겨두기보다는 중요한 정보 (예 : 데이터)를 포함하도록 소식을 수정해야합니다. – Frank