Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / /

$minMaxScaler (창 함수)

버전 8.2에 추가 되었습니다.

$minMaxScaler

값 창 내에서 숫자 표현식 정규화합니다. 기본값 으로 값의 범위 0에서 1 사이입니다. 가장 작은 값은 0이 되고, 가장 큰 값은 1이 되며, 다른 모든 값은 0과 1 사이에서 비례하여 확장하다 . 정규화된 출력 범위 에 대한 사용자 지정 최소값과 최대값을 지정할 수도 있습니다.

$minMaxScaler 는 단계에서만 사용할 수 $setWindowFields 있습니다.

$minMaxScaler 창 연산자 구문은 다음과 같습니다.

{ $minMaxScaler: <numeric expression> }

값은 다음과 같을 수 있습니다.

  • 정규화하려는 값인 숫자 표현식 입니다. 특정 숫자 필드 또는 문서에서 계산된 값일 수 있습니다.

  • 다음 형식의 문서 입니다.

    {
    input: <numeric expression>,
    min: <constant numeric expression>,
    max: <constant numeric expression>
    }
    필드
    설명

    input

    정규화하려는 값이 포함된 숫자 표현식 입니다.

    min

    출력에 포함하려는 최소값입니다. 생략하면 기본값은 0입니다.

    max

    출력에 포함하려는 최대값입니다. 생략하면 기본값은 1입니다.

$minMaxScaler 는 다음 공식을 사용하여 숫자 표현식 정규화합니다.

minMaxScaler(x, min, max) = ((x - min(X)) / (max(X) - min(X))) * (max - min) + min

구제척으로:

x

정규화할 값입니다.

min

원하는 출력 최소값입니다.

max

원하는 출력의 최대값입니다.

min(X)

범위 의 최소값입니다.

max(X)

범위 의 최대값입니다.

값이 다음 중 하나에 해당하면 는 오류를 $minMaxScaler 반환합니다.input

  • Non-numeric

  • Null

  • 빈 배열

  • 문자열

컬렉션 의 문서에 다음 값을 포함하는 a 이라는 이름의 필드 있다고 가정해 보겠습니다.

{ "_id": 1, "a": 1 }
{ "_id": 2, "a": 5 }
{ "_id": 3, "a": 13 }
{ "_id": 4, "a": 21 }

다음 파이프라인 단계와 출력을 고려하세요.

db.example.aggregate([
{$setWindowFields: {
sortBy: {a: 1},
output: {
scaled: {$minMaxScaler: "$a"},
scaledTo100: {$minMaxScaler: {input: "$a", min: 0, max: 100}},
}
}}
])
{a: 1, scaled: 0, scaledTo100: 0}
{a: 5, scaled: 0.2, scaledTo100: 20}
{a: 13, scaled: 0.6, scaledTo100: 60}
{a: 21, scaled: 1, scaledTo100: 100}

앞의 예시 에서 파이프라인 를 사용하여 두 개의 스케일링된 값을 $minMaxScaler 계산합니다.

  • scaled, 기본값 인 01 을 확장하다 에 적용합니다.

  • scaledTo1000 ~ 100 범위 를 확장하다 에 적용합니다.

출력에는 의 a $minMaxScaler 원래 값과 조정된 두 값이 표시됩니다.min(X) 1 max(X) 는 문서(여기서 는,21 는(문서에서 계산))에 대해 다음을 사용하여 배율이 조정된 값을 반환합니다.

{a: 1}
scaled = ((1 - 1) / (21 - 1)) * (1 - 0) + 0 = 0
scaledTo100 = ((1 - 1) / (21 - 1)) * (100 - 0) + 0 = 0
{a: 5}
scaled = ((5 - 1) / (21 - 1)) * (1 - 0) + 0 = (4 / 20) * 1 + 0 = 0.2
scaledTo100 = ((5 - 1) / (21 - 1)) * (100 - 0) + 0 = (4 / 20) * 100 + 0 = 20
{a: 13}
scaled = ((13 - 1) / (21 - 1)) * (1 - 0) + 0 = (12 / 20) * 1 + 0 = 0.6
scaledTo100 = ((13 - 1) / (21 - 1)) * (100 - 0) + 0 = (12 / 20) * 100 + 0 = 60
{a: 21}
scaled = ((21 - 1) / (21 - 1)) * (1 - 0) + 0 = (20 / 20) * 1 + 0 = 1
scaledTo100 = ((21 - 1) / (21 - 1)) * (100 - 0) + 0 = (20 / 20) * 100 + 0 = 100

돌아가기

$minN-array-element

이 페이지의 내용