행렬 R의 값 정규화

Jinku Hu 2023년1월30일
  1. sweep기능을 사용하여 R에서 배열을 제거합니다
  2. scale함수를 사용하여 R 행렬의 값 정규화
행렬 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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - R Matrix