행렬 R의 값 정규화
이 기사에서는 R 행렬의 값을 정규화하는 방법을 소개합니다.
sweep
기능을 사용하여 R에서 배열을 제거합니다
sweep
기능은 배열에서 요약 통계를 제거하는 데 사용됩니다. 입력 배열을 첫 번째 인수로 사용하고 요약 통계를 세 번째 인수로 사용합니다. 함수의 두 번째 인수는 세 번째 인수 벡터의 요소에 대응해야하는 인덱스 벡터를 나타냅니다. 네 번째 인수는 배열을 제거하는 데 사용되는 함수를 나타냅니다. 이 경우, 인용 된 표기법 인"/"
와 함께 제공 될 수있는 나누기 연산자를 전달합니다. 이 함수는 입력 배열과 모양이 같은 배열을 반환합니다. colSums
함수를 사용하여 주어진 입력 배열의 열 합계를 계산하고 결과를 요약 통계로 전달합니다.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
sweep(m1, 2, colSums(m1), FUN = "/")
출력:
[,1] [,2] [,3] [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
sweep
함수는 함수 매개 변수의 기본값을 사용할 수도 있습니다. 사용자가 명시 적으로 제공하지 않으면 함수는 빼기 연산자로 간주됩니다. 사용자 지정 함수 개체가 전달되면 두 개의 인수가 있어야합니다. 다음 코드 조각은 행렬의 해당 열에있는 요소에서 각 열의 중앙값을 뺍니다.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
med.att <- apply(m1, 2, median)
sweep(m1, 2, med.att)
출력:
[,1] [,2] [,3] [,4]
[1,] -0.1 -0.8 0.0 2.1
[2,] 0.0 1.8 -1.5 0.0
[3,] 3.1 0.0 2.4 -4.1
scale
함수를 사용하여 R 행렬의 값 정규화
행렬 데이터 정규화에 유용한 또 다른 함수는scale
로, 입력 행렬의 각 열을scale
이라는 세 번째 인수의 해당 값으로 나눕니다. scale
은 열 센터링에 사용되는center
인수를 사용합니다 (자세한 내용은이 페이지에서 찾을 수 있음). 이 경우FALSE
를 후자의 인수에 할당하여 열 중심화를 수행 할 필요가 없음을 나타냅니다. colSums
함수는 입력 행렬의 각 열에 대한 합계를 계산하고이를scale
인수로 전달하는 데 사용됩니다.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
c1 <- colSums(m1)
scale(m1, center = FALSE, scale = c1)
출력:
[,1] [,2] [,3] [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
attr(,"scaled:scale")
[1] 6.6 7.3 16.8 18.1
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook