2014-02-06 4 views
0

나는 R에서 여러 변수를 정규화 한 kmeans 클러스터를 만들었습니다.이 모델은 클러스터 센터를 제공하지만 분명히 정규화 된 상태 (예 : 소득 중심 -1.6).정규화 된 변수를 다시 정규화되지 않은 값으로 변환

소득을 42,000과 같이 실용적인 의미를 부여하기 위해 -1.6을 다시 정규화되지 않은 값으로 변환하려고합니다.

이제는 해당 z 점수를 다시 값으로 변환 할 수 있지만 R 함수를 사용하여 정규화 된 변수를 여러 개 사용하는 방법이 있습니까?

나는 pnorm()을 사용하여 백분율을 얻을 수 있지만 정상화하기 전에 원래 데이터 프레임에 다시 적용 할 수있는 더 많은 것을 찾고 있습니다.

답변

0

일단 클러스터 할당을하면 (원시) 데이터의 평균을 계산하는 것이 가장 쉽습니다. 예를 들어, plyr 사용 :

# install.packages('plyr') 
require(plyr) 
dat <- mtcars[,1:4] 
dat$cvar <- kmeans(scale(dat), 3)$cluster 
ddply(dat, c("cvar"), colwise(mean)) 

    cvar  mpg  cyl  disp  hp 
1 1 13.41429 8.000000 390.5714 248.42857 
2 2 23.97222 4.777778 135.5389 98.05556 
3 3 16.78571 8.000000 315.6286 170.00000 
+0

기술적으로 'model $ centers'값에서 결정된 표준 편차의 양을 원래 전체 데이터 프레임의 평균값에 더해야합니다. 센터 값은 우리가 의미하는 표준 편차의 양을 알려줍니다. – Cybernetic

3

원본 데이터의 표준 편차와 평균이 필요합니다. 당신이 그것들을 가지고 있다면, 비정규 화는 간단히 x = std * z + m입니다. std와 m은 표준 편차와 x의 평균입니다. 방정식은 z- 스코어의 정의에서 직접 따릅니다.

+0

감사합니다. 원래 벡터를 읽는 것에서 그렇게 할 수있는 방법이 있습니까? 그래서, pnorm (kmeans $ 센터, 원래 df $ var 평균, 원래 df $ var sd) 같은가? – mpg

+0

저는 Matlab에 더 가깝지만, @ Vincent가 scale, ddply, colwise를 사용하여 게시 한 솔루션이 여러분을 거기에 데려다 줄 것이라고 생각합니다. – hlindblo

관련 문제