다음을 통해 공유


ExpressionEstimator 클래스

정의

이 예측 도구는 입력 열 값에 사용자 제공 식(문자열로 지정됨)을 적용하여 새 출력 열 값을 생성합니다.

public sealed class ExpressionEstimator : Microsoft.ML.IEstimator<Microsoft.ML.Transforms.ExpressionTransformer>
type ExpressionEstimator = class
    interface IEstimator<ExpressionTransformer>
Public NotInheritable Class ExpressionEstimator
Implements IEstimator(Of ExpressionTransformer)
상속
ExpressionEstimator
구현

설명

예측 도구 특성

이 예측 도구는 매개 변수를 학습하기 위해 데이터를 확인해야 합니까? No
입력 열 데이터 형식 float, double, int, long, bool 또는 text.
출력 열 데이터 형식 식에 따라 float, double, int, long, bool 또는 text일 수 있습니다.

결과 ExpressionTransformer 는 출력 열 이름 매개 변수에 지정된 대로 명명된 새 열을 만듭니다. 여기서 식은 입력 값에 적용됩니다. 대부분의 입력 열은 VectorDataViewType 형식일 수 있으며 입력에 벡터 열이 포함되어 있으면 식은 벡터의 각 요소에서 독립적으로 계산되어 해당 입력과 동일한 길이의 벡터 출력을 만듭니다.

식 언어

식 예측 도구의 언어는 광범위한 사용자에게 적합해야 합니다. 그것은 몇 가지 인기있는 언어와 많은 유사성을 공유합니다. 대/소문자를 구분하고, 여러 형식을 지원하며, 풍부한 연산자 및 함수 집합이 있습니다. 언어에 변경 가능한 값이나 변경 작업이 없다는 점에서 순수한 기능입니다. 일반 값이 적절하지 않을 때 NA 값을 생성하는 대신 예외 메커니즘이 없으며 필요도 없습니다. 정적으로 형식화되지만 모든 형식은 컴파일러에 의해 유추됩니다.

Syntax

람다의 구문은 매개 변수 목록과 콜론(:) 또는 화살표(=>) 뒤에 식으로 구성됩니다. 매개 변수 목록은 괄호로 둘러싸인 하나 이상의 식별자의 단일 식별자 또는 쉼표로 구분된 목록일 수 있습니다.

람다:

  • parameter-list : expression
  • parameter-list => expression

parameter-list:

  • identifier
  • (parameter-names)

parameter-names:

  • identifier
  • identifier , parameter-names

식은 매개 변수, 리터럴, 연산자, 식 및 함수를 사용할 수 있습니다.

리터럴

  • 부울 리터럴은 true이고 false입니다.
  • 정수 리터럴은 10진수 또는 16진수(예: 0x1234ABCD)일 수 있습니다. 서명되지 않았음을 나타내는 사용자 또는 U와 함께 접미사를 지정할 수 있으며 l 또는 L은 long(Int64)을 나타냅니다. 사용자 또는 U의 사용은 드물며 특정 32비트 16진수 값의 승격에만 영향을 미치며 상수가 음수 Int32 값 또는 양의 Int64 값으로 간주되는지 여부를 결정합니다.
  • 부동 소수점 리터럴은 지수 표기법(123.45e-37)을 포함하여 표준 구문을 사용합니다. f 또는 F로 접미사를 붙일 수 있으며 전체 자릿수를 나타내는 d 또는 D로 이중 정밀도를 나타냅니다. C#에서와 달리 부동 소수점 리터럴의 기본 정밀도는 단일 정밀도입니다. 배정밀도를 지정하려면 d 또는 D를 추가합니다.
  • 텍스트 리터럴은 큰따옴표로 묶고 표준 이스케이프 메커니즘을 지원합니다.

연산자

식 언어의 연산자는 다음 표에 사전순으로 나열됩니다. 달리 명시되지 않는 한 이진 연산자는 결합된 상태로 남아 NA 값을 전파합니다(피연산자 값 중 하나가 NA인 경우 결과는 NA임). 일반적으로 정수 값의 오버플로는 NA를 생성하고 부동 소수점 값의 오버플로는 무한대를 생성합니다.

연산자 의미 인자 설명
​? : 조건부 삼항 식 조건? value1 : value2는 조건이 true이면 value1로, 조건이 false이면 value2로 확인됩니다. 조건은 부울이어야 하고 value1 및 value2는 호환되는 형식이어야 합니다.
​?? 합체 이진 식 x ?? x가 NA가 아니면 y가 x로 확인되고, 그렇지 않으면 y로 확인됩니다. 피연산자는 Singles 또는 Doubles 모두여야 합니다. 이 연산자는 오른쪽 결합형입니다.
| | 또는 논리적 또는 이진 피연산자와 결과는 부울입니다. 피연산자 하나가 true이면 결과가 true이고, 그렇지 않으면 false입니다.
&& 및 논리 및 이진 피연산자와 결과는 부울입니다. 피연산자 하나가 false이면 결과는 false이고, 그렇지 않으면 true입니다.
​==, =
!=, <>
<, <=
>, >=
equals
같지 않음
작거나 같음
크거나 같음
여러 - 비교 연산자는 다중 arity이므로 두 개 이상의 피연산자에 적용할 수 있습니다. 예를 들어 a == b == c는 a, b 및 c의 값이 같으면 true가 생성됩니다. 같지 않은 연산자는 모든 피연산자가 고유해야 하므로 1 != 2 != 1은 false입니다. x가 음수가 아닌지 10 미만인지 테스트하려면 0 <= x < 10을 사용합니다. 0 <= x && x < 10을 작성할 필요가 없으며, 이렇게 하면 성능도 좋지 않습니다. 동일한 줄에 나열된 연산자는 단일 식에서 결합될 수 있으므로 > b >= c는 적법하지만 < b >= c는 그렇지 않습니다.
- 같음 및 같지 않음은 모든 피연산자 형식에 적용되지만 순서가 지정된 연산자는 숫자 피연산자가 필요합니다.
​+ - 더하기 및 빼기 이진 NA 전파를 사용하여 숫자 추가 및 빼기.
​* / % 곱하기, 나누기 및 모듈러스 이진 NA 전파를 사용하는 숫자 곱하기, 나누기 및 모듈러스입니다.
​- ! not 숫자 부정 및 논리 not 단항 이들은 단항 접두사 연산자이며 부울 피연산자가 필요한 것이 아니라 숫자 피연산자가 필요한 부정(-)입니다.
​^ 전원 이진 이것은 올바른 결합 지수입니다. 숫자 피연산자가 필요합니다. 정수 피연산자에서 0^0은 1을 생성합니다.
​( ) 괄호 그룹화 단항 표준 의미입니다.

With 식

with 식의 구문은 다음과 같습니다.

with-expression:

  • with( assignment-list ; expression )

assignment-list:

  • 할당
  • assignment , assignment-list

할당:

  • 식별자 =

with 식에는 하나 이상의 명명된 값이 도입됩니다. 예를 들어 다음 식은 셀시우스 온도를 화씨로 변환한 다음 화씨가 너무 낮거나 높은지 여부에 따라 메시지를 생성합니다.

c => with(f = c * 9 / 5 + 32 ; f < 60 ? "Too Cold!" : f > 90 ? "Too Hot!" : "Just Right!")

한 할당에 대한 식은 메시지 대신 -1, 0 또는 1을 반환하는 이 예제와 같이 이전 할당에 의해 도입된 식별자를 참조할 수 있습니다.

c : with(f = c * 9 / 5 + 32, cold = f < 60, hot = f > 90 ; -float(cold) + float(hot))

위에서 설명한 것처럼 with-expression은 큰 식에서 식 값이 여러 번 필요한 경우에 유용합니다. 복잡하거나 중요한 상수를 처리할 때도 유용합니다.

    ticks => with(
        ticksPerSecond = 10000000L,
        ticksPerHour = ticksPerSecond \* 3600,
        ticksPerDay = ticksPerHour \* 24,
        day = ticks / ticksPerDay,
        dayEpoch = 1 ;
        (day + dayEpoch) % 7)

표준 .Net DateTime epoch(이상화된 그레고리오력의 01/01/0001) 이후의 틱 수(Int64)에서 요일을 계산합니다. 배정은 1초의 틱 수, 1시간의 틱 수, 1년 동안의 틱 수 및 Epoch의 요일에 사용됩니다. 이 예제에서는 일요일을 0으로 매핑하려고 하므로 epoch는 월요일이므로 dayEpoch를 1로 설정합니다. Epoch가 변경되었거나 다른 요일을 0으로 매핑하려는 경우 dayEpoch를 변경하기만 하면 됩니다. ticksPerSecond는 Int64 값(8 바이트 정수)으로 만들기 위해 100000000L로 정의됩니다. L 접미사가 없으면 ticksPerDay는 Int32의 범위를 오버플로합니다.

Functions

식 변환은 많은 유용한 함수를 지원합니다.

모든 형식의 피연산자를 수락할 수 있는 일반 단항 함수는 다음 표에 나와 있습니다.

이름 의미 코멘트
isna na에 대한 테스트 피연산자 가 NA 값인지 여부를 나타내는 부울 값을 반환합니다.
Na na 값 피연산자(float 또는 double)와 동일한 형식의 NA 값을 반환합니다. 이는 피연산자를 평가하지 않으며, 반환할 NA 형식을 결정하기 위해 피연산자만 사용하며, 해당 결정은 컴파일 시간에 발생합니다.
기본 기본값 피연산자와 동일한 형식의 기본값을 반환합니다. 예를 들어 NA 값을 기본값에 매핑하려면 x ?? default(x). 이는 피연산자를 평가하지 않고, 피연산자를 사용하여 반환할 기본값의 형식을 결정하며, 해당 결정은 컴파일 시간에 발생합니다. 숫자 형식의 경우 기본값은 0입니다. 부울의 경우 기본값은 false입니다. 텍스트의 경우 기본값은 비어 있습니다.

단항 변환 함수는 다음 표에 나와 있습니다. NA 피연산자는 NA를 생성하거나 형식이 지원하지 않는 경우 을 throw합니다. 변환이 성공하지 못하거나 오버플로로 인해 NA 또는 예외가 발생합니다. 가장 일반적인 경우는 표준 변환 구문 분석을 사용하는 텍스트에서 변환하는 경우입니다. 부동 소수점 값(float 또는 double)에서 정수 값(Int32 또는 Int64)으로 변환할 때 변환은 잘림 연산(0으로 반올림)을 수행합니다.

이름 의미 코멘트
Bool 부울로 변환 피연산자는 텍스트 또는 부울이어야 합니다.
Int 으로 변환 Int32 입력은 모든 형식일 수 있습니다.
으로 변환 Int64 입력은 모든 형식일 수 있습니다.
single, float 으로 변환 Single 입력은 모든 형식일 수 있습니다.
더블 으로 변환 Double 입력은 모든 형식일 수 있습니다.
텍스트 텍스트로 변환 입력은 모든 형식일 수 있습니다. 이렇게 하면 기본 텍스트 표현이 생성됩니다.

숫자 피연산자가 필요한 단항 함수는 다음 표에 나와 있습니다. 결과 형식은 피연산자 형식과 동일합니다. NA 피연산자 값은 NA를 생성합니다.

이름 의미 코멘트
아 bs 절대값 피연산자의 절대값을 생성합니다.
서명 기호(-1, 0, 1) 피연산자의 음수, 0 또는 양수 여부에 따라 -1, 0 또는 1을 생성합니다.

숫자 피연산자가 필요한 이진 함수는 다음 표에 나열되어 있습니다. 피연산자 형식이 동일하지 않으면 피연산자는 적절한 형식으로 승격됩니다. 결과 형식은 승격된 피연산자 형식과 동일합니다. NA 피연산자 값은 NA를 생성합니다.

이름 의미 코멘트
최소 피연산자의 최소값을 생성합니다.
최대 maximum 피연산자의 최대값을 생성합니다.

부동 소수점 피연산자가 필요한 단항 함수는 다음 표에 나열되어 있습니다. 결과 형식은 피연산자 형식과 동일합니다. 오버플로는 무한대를 생성합니다. 잘못된 입력 값은 NA를 생성합니다.

이름 의미 코멘트
Sqrt 제곱근 음의 피연산자는 NA를 생성합니다.
trunc, truncate 정수로 자르기 0으로 반올림하여 가장 가까운 정수 값으로 반올림합니다.
바닥 바닥 음의 무한대로 가장 가까운 정수 값으로 반올림합니다.
ceil, ceiling 천장 양수 무한대로 가장 가까운 정수 값으로 반올림합니다.
라운드 편견 없는 반올림 가장 가까운 정수 값으로 반올림합니다. 피연산자는 두 정수 값 사이의 절반 정도인 경우 짝수 정수 를 생성합니다.
특급 급수적 인 e를 피연산자로 올립니다.
ln, log 로그 자연(기본 e) 로그를 생성합니다. 다른 베이스를 사용하기 위한 두 개의 피연산자 버전의 로그도 있습니다.
deg, degrees 라디안에서 도까지 라디안에서 도로 매핑합니다.
rad, radians 도에서 라디안으로 도에서 라디안으로 매핑합니다.
죄, 죄 사인 사인을 각도로 사용합니다. sin 함수는 피연산자를 라디안으로 가정하고 sind 함수는 피연산자를 도 단위로 가정합니다.
cos, cosd 코사인 각도의 코사인을 사용합니다. cos 함수는 피연산자를 라디안으로 가정하고 cosd 함수는 피연산자를 도 단위로 가정합니다.
tan, tand 탄젠트 각도의 탄젠트를 사용합니다. tan 함수는 피연산자를 라디안으로 가정하고 탠드 함수는 피연산자를 도 단위로 가정합니다.
Sinh 쌍곡선 사인 피연산자의 쌍곡 사인을 사용합니다.
cosh 하이퍼볼릭 코사인 피연산자의 하이퍼볼릭 코사인을 사용합니다.
Tanh 쌍곡선 탄젠트 피연산자의 쌍곡 탄젠트를 사용합니다.
Asin 역 사인 피연산자의 역 사인을 사용합니다.
Acos 역 코사인 피연산자의 역 코사인을 사용합니다.
Atan 역 탄젠트 피연산자의 역 탄젠트를 사용합니다.

부동 소수점 피연산자가 필요한 이진 함수는 다음 표에 나열되어 있습니다. 피연산자 형식이 동일하지 않으면 피연산자는 적절한 형식으로 승격됩니다. 결과 형식은 승격된 피연산자 형식과 동일합니다. NA 피연산자 값은 NA를 생성합니다.

이름 의미 코멘트
로그 지정된 기준이 있는 logarithm 두 번째 피연산자는 기본입니다. 첫 번째는 로그를 사용할 값입니다.
atan2, atanyx 각도 결정 지정된 y 및 x 값에서 -pi와 pi 사이의 각도를 결정합니다. y는 첫 번째 피연산자입니다.

텍스트 함수는 다음 표에 나와 있습니다.

이름 의미 코멘트
len(x) 텍스트 길이 피연산자는 텍스트여야 합니다. 결과는 피연산자의 길이를 나타내는 I4입니다. 피연산자는 NA이면 결과는 NA입니다.
lower(x), upper(x) 소문자 또는 대문자 텍스트를 소문자 또는 대문자로 매핑합니다.
left(x, k), right(x, k) 부분 첫 번째 피연산자는 텍스트여야 하고 두 번째 피연산자는 Int32여야 합니다. 두 번째 피연산자는 음수이면 텍스트 끝에서 오프셋으로 처리됩니다. 이 조정된 인덱스는 0에서 len(x)로 고정됩니다. 결과는 결과 위치의 왼쪽 또는 오른쪽에 있는 문자입니다.
mid(x, a, b) 부분 첫 번째 피연산자는 텍스트여야 하고 다른 두 피연산자는 Int32여야 합니다. 인덱스는 왼쪽 및 오른쪽 함수와 동일한 방식으로 변환됩니다. 음수 값은 텍스트 끝에서 오프셋으로 처리됩니다. 이러한 조정된 인덱스는 0에서 len(x)로 고정됩니다. 두 번째 고정 인덱스도 첫 번째 고정 인덱스로 아래에 고정됩니다. 결과는 이러한 두 고정 인덱스 사이의 문자입니다.
concat(x1, x2, ..., xn) 연결 이렇게 하면 임의 수의 피연산자(0 포함)가 허용됩니다. 모든 피연산자는 텍스트여야 합니다. 결과는 순서대로 모든 피연산자의 연결입니다.

메서드

Fit(IDataView)

이 예측 도구는 입력 열 값에 사용자 제공 식(문자열로 지정됨)을 적용하여 새 출력 열 값을 생성합니다.

GetOutputSchema(SchemaShape)

이 예측 도구는 입력 열 값에 사용자 제공 식(문자열로 지정됨)을 적용하여 새 출력 열 값을 생성합니다.

확장 메서드

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

추정기 체인에 '캐싱 검사점'을 추가합니다. 이렇게 하면 다운스트림 예측 도구가 캐시된 데이터에 대해 학습됩니다. 여러 데이터 전달을 수행하는 트레이너 앞에 캐싱 검사점이 있으면 도움이 됩니다.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

예측 도구가 지정된 경우 가 호출되면 Fit(IDataView) 대리자를 호출할 래핑 개체를 반환합니다. 예측 도구에서 적합한 항목에 대한 정보를 반환하는 것이 중요한 경우가 많습니다. 따라서 Fit(IDataView) 메서드는 일반 ITransformer가 아닌 구체적으로 형식화된 개체를 반환합니다. 그러나 동시에 IEstimator<TTransformer> 많은 개체가 있는 파이프라인으로 형성되는 경우가 많으므로 변환기를 가져오려는 추정기가 이 체인의 어딘가에 묻혀 있는 위치를 통해 EstimatorChain<TLastTransformer> 예측 도구 체인을 빌드해야 할 수 있습니다. 이 시나리오에서는 fit이 호출되면 호출될 대리자를 이 메서드를 통해 연결할 수 있습니다.

적용 대상

추가 정보