Język

ExpressionEstimator Klasa

Definicja

Ten narzędzie do szacowania stosuje wyrażenie podane przez użytkownika (określone jako ciąg) do wartości kolumn wejściowych w celu wygenerowania nowych wartości kolumn wyjściowych.

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)
Dziedziczenie
ExpressionEstimator
Implementuje

Uwagi

Charakterystyka narzędzia do szacowania

Czy ten narzędzie do szacowania musi przyjrzeć się danym, aby wytrenować jego parametry? No
Typ danych kolumny wejściowej float, double, int, long, bool lub text.
Typ danych kolumny wyjściowej Może być zmiennoprzecinkowy, podwójny, int, długi, logiczny lub tekst, w zależności od wyrażenia.

Wynikowy element ExpressionTransformer tworzy nową kolumnę o nazwie określonej w parametrach nazwy kolumny wyjściowej, gdzie wyrażenie jest stosowane do wartości wejściowych. Co najwyżej jedna z kolumn wejściowych może być typu VectorDataViewType, a gdy dane wejściowe zawierają kolumnę wektorową, wyrażenie jest obliczane niezależnie na każdym elemenie wektora, aby utworzyć dane wyjściowe wektora o tej samej długości co te dane wejściowe.

Język wyrażeń

Język narzędzia do szacowania wyrażeń powinien być wygodny dla szerokiej gamy użytkowników. Udostępnia wiele podobieństw do niektórych popularnych języków. Jest rozróżniana wielkość liter, obsługuje wiele typów i ma bogaty zestaw operatorów i funkcji. Jest to czysta funkcja, w tym sensie, że w języku nie ma modyfikowalnych wartości ani operacjimutowania. Nie ma żadnego mechanizmu wyjątku, a nie ma żadnego mechanizmu wyjątku, zamiast tego generuje wartości NA, gdy wartość normalna nie jest odpowiednia. Jest on statycznie typowany, ale wszystkie typy są wnioskowane przez kompilator.

Syntax

Składnia lambda składa się z listy parametrów, po której następuje dwukropek (:) lub strzałka (=>), po którym następuje wyrażenie. Lista parametrów może być pojedynczym identyfikatorem lub rozdzielaną przecinkami listą jednego lub większej liczby identyfikatorów otoczonych nawiasami.

lambda:

  • parametr-lista : wyrażenie
  • parametr-list => wyrażenie

parametr-lista:

  • identyfikator
  • (nazwy parametrów)

nazwy parametrów:

  • identyfikator
  • identyfikator , nazwy parametrów

Wyrażenie może używać parametrów, literałów, operatorów, z wyrażeniami i funkcjami.

Literals

  • Literały logiczne są prawdziwe i fałszywe.
  • Literały liczb całkowitych mogą być dziesiętne lub szesnastkowe (np. 0x1234ABCD). Mogą być sufiksowane z użytkownikiem lub U, wskazując niepodpisane, a także l lub L, wskazując długie (Int64). Korzystanie z użytkownika lub U jest rzadkie i wpływa tylko na podwyższenie niektórych wartości szesnastkowe 32-bitowe, określając, czy stała jest uważana za ujemną wartość Int32, czy dodatnią wartość Int64.
  • Literały zmiennoprzecinkowe używają standardowej składni, w tym notacji wykładniczej (123.45e-37). Mogą być sufiksami f lub F, wskazując pojedynczą precyzję lub d lub D, co oznacza podwójną precyzję. W przeciwieństwie do języka C#, domyślna precyzja literału zmiennoprzecinkowego to pojedyncza precyzja. Aby określić podwójną precyzję, dołącz d lub D.
  • Literały tekstowe są ujęte w znaki podwójnego cudzysłowu i obsługują standardowe mechanizmy ucieczki.

Operatorów

Operatory języka wyrażeń są wymienione w poniższej tabeli w kolejności precendence. Jeśli nie określono inaczej, operatory binarne pozostają asocjacyjne i propagują wartości NA (jeśli którakolwiek wartość operandu to NA, wynik to NA). Ogólnie rzecz biorąc, przepełnienie wartości całkowitych powoduje wygenerowanie wartości NA, podczas gdy przepełnienie wartości zmiennoprzecinkowych powoduje nieskończoność.

Operator Meaning Arity Comments
​? : warunkowe Ternary Warunek wyrażenia ? value1: wartość2 jest rozpoznawana jako wartość 1, jeśli warunek ma wartość true i wartość2, jeśli warunek ma wartość false. Warunek musi być wartością logiczną, a wartość1 i wartość2 muszą być zgodne.
​?? łączenie Dane binarne Wyrażenie x ?? y jest rozpoznawany jako x, jeśli x nie jest NA, i rozpoznaje wartość y w przeciwnym razie. Operandy muszą być zarówno singli, jak i oba. Ten operator jest prawo asocjacyjny.
| | lub logiczne lub Dane binarne Operandy i wynik są wartościami logicznymi. Jeśli jeden operand ma wartość true, wynik ma wartość true, w przeciwnym razie jest to fałsz.
&&i logiczne i Dane binarne Operandy i wynik są wartościami logicznymi. Jeśli jeden operand ma wartość false, wynikiem jest fałsz, w przeciwnym razie jest to prawda.
​==, =
!=, <>
<, <=
>, >=
equals
nie równa się
mniejsze lub równe
większe lub równe
Wiele - Operatory porównania są wieloarytowe, co oznacza, że mogą być stosowane do co najmniej dwóch operandów. Na przykład a == b == c daje wartość true, jeśli a, b i c mają tę samą wartość. Operator nie równy wymaga, aby wszystkie operandy są odrębne, więc 1 != 2 != 1 jest fałszem. Aby sprawdzić, czy x nie jest ujemne, ale mniejsze niż 10, użyj wartości 0 <= x < 10. Nie ma potrzeby zapisu 0 <= x && x < 10 i nie będzie to również działać. Operatory wymienione w tym samym wierszu można połączyć w jednym wyrażeniu, więc > b >= c jest legalne, ale < b >= c nie jest.
- Równa się i nie równa się ma zastosowanie do dowolnego typu operandu, podczas gdy uporządkowane operatory wymagają operandów liczbowych.
​+ - dodawanie i odejmowanie Binarnym Dodawanie liczbowe i odejmowanie za pomocą propagacji NA.
* / % mnożenie, dzielenie i modulo Dane binarne Mnożenie liczbowe, dzielenie i modulo z propagacją NA.
​- ! not negacja liczbowa i logiczna nie Jednoargumentowy Są to operatory prefiksu jednoargumentowego, negacja (-) wymagająca operandu liczbowego, a nie (!) wymagającego operandu logicznego.
​^ Zasilania Dane binarne Jest to prawo asocjacyjne wykładnicze. Wymaga ona operandów liczbowych. W przypadku operandów całkowitych 0^0 generuje 1.
​( ) grupowanie nawiasów Jednoargumentowy Znaczenie standardowe.

Wyrażenie with

Składnia wyrażenia with-expression to:

z wyrażeniem:

  • with( lista przydziałów ; wyrażenie )

lista przydziałów:

  • przypisanie
  • przypisanie , lista przydziałów

przypisanie:

  • wyrażenie identyfikatora =

Wyrażenie z wyrażeniem wprowadza co najmniej jedną nazwaną wartość. Na przykład następujące wyrażenie konwertuje temperaturę celcius na fahrenheit, a następnie generuje komunikat na podstawie tego, czy fahrenheit jest zbyt niski, czy wysoki.

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

Wyrażenie dla jednego przypisania może odwoływać się do identyfikatorów wprowadzonych przez poprzednie przypisania, jak w tym przykładzie, które zwraca wartość -1, 0 lub 1 zamiast komunikatów:

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

Jak pokazano powyżej, wyrażenie z wyrażeniem jest przydatne, gdy wartość wyrażenia jest potrzebna wiele razy w większym wyrażeniu. Przydaje się również w przypadku skomplikowanych lub znaczących stałych:

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

Oblicza dzień tygodnia od liczby kleszczy (jako int64) od standardowej epoki .Net DateTime (01/01/0001 w idealizowanym kalendarzu gregoriańskim). Przypisania są używane w przypadku liczby kleszczy w ciągu sekundy, liczby kleszczy w ciągu godziny, liczby kleszczy w roku i dnia tygodnia dla epoki. W tym przykładzie chcemy mapować niedzielę na zero, więc ponieważ epoka to poniedziałek, ustawiliśmy dzieńPoch na 1. Jeśli epoka została zmieniona lub chcemy mapować inny dzień tygodnia na zero, po prostu zmienilibyśmy dzieńPoch. Należy pamiętać, że funkcja ticksPerSecond jest zdefiniowana jako 100000000L, aby była to wartość Int64 (liczba całkowita 8 bajtów). Bez sufiksu L znacznikiPerDay przepełni zakres Int32.

Functions

Przekształcenie wyrażenia obsługuje wiele przydatnych funkcji.

Ogólne funkcje jednoargumentowe, które mogą akceptować operand dowolnego typu, są wymienione w poniższej tabeli.

Nazwa Znaczenie Komentarze
isna test dla elementu na Zwraca wartość logiczną wskazującą, czy operand jest wartością NA.
na wartość na Zwraca wartość NA tego samego typu co operand (zmiennoprzecinkowy lub podwójny). Należy pamiętać, że nie oblicza to operandu, używa tylko operandu do określenia typu NA do zwrócenia, a ta determinacja występuje w czasie kompilacji.
Domyślny wartość domyślna Zwraca wartość domyślną tego samego typu co operand. Na przykład aby mapować wartości NA na wartości domyślne, użyj x ?? default(x). Należy pamiętać, że nie ocenia operandu, używa tylko operandu do określenia typu wartości domyślnej do zwrócenia, a ta determinacja ma miejsce w czasie kompilacji. W przypadku typów liczbowych wartość domyślna to zero. W przypadku wartości logicznej wartość domyślna to false. W przypadku tekstu wartość domyślna jest pusta.

Funkcje konwersji jednoargumentowej są wymienione w poniższej tabeli. Operand NA generuje argument NA lub zgłasza błąd, jeśli typ nie obsługuje go. Konwersja, która nie powiedzie się, lub przepełnienie również powoduje nachylanie lub wyjątek. Najczęstszym przypadkiem jest konwersja z tekstu, który korzysta ze standardowego analizowania konwersji. Podczas konwertowania wartości zmiennoprzecinkowej (zmiennoprzecinkowej lub podwójnej) na wartość całkowitą (Int32 lub Int64) konwersja wykonuje operację obciętą (zaokrągloną w kierunku zera).

Nazwa Znaczenie Komentarze
bool konwertowanie na wartość logiczną Operand musi być tekstem lub wartością logiczną.
int przekonwertuj na Int32 Dane wejściowe mogą być dowolnego typu.
długi przekonwertuj na Int64 Dane wejściowe mogą być dowolnego typu.
pojedynczy, zmiennoprzecinkowy przekonwertuj na Single Dane wejściowe mogą być dowolnego typu.
Podwójne przekonwertuj na Double Dane wejściowe mogą być dowolnego typu.
tekst konwertowanie na tekst Dane wejściowe mogą być dowolnego typu. Spowoduje to utworzenie domyślnej reprezentacji tekstu.

Funkcje jednoargumentowe, które wymagają operandu liczbowego, są wymienione w poniższej tabeli. Typ wyniku jest taki sam jak typ operandu. Wartość operandu NA generuje wartość NA.

Nazwa Znaczenie Komentarze
Abs wartość bezwzględna Tworzy wartość bezwzględną operandu.
znak znak (-1, 0, 1) Tworzy wartość -1, 0 lub 1 w zależności od tego, czy operand jest ujemny, zero, czy dodatni.

Funkcje binarne, które wymagają operandów liczbowych, są wymienione w poniższej tabeli. Gdy typy operandów nie są takie same, operandy są promowane do odpowiedniego typu. Typ wyniku jest taki sam jak promowany typ operandu. Wartość operandu NA generuje wartość NA.

Nazwa Znaczenie Komentarze
Min minimum Tworzy minimum operandów.
Max maksimum Tworzy maksymalną liczbę operandów.

Funkcje jednoargumentowe, które wymagają operandu zmiennoprzecinkowego, są wymienione w poniższej tabeli. Typ wyniku jest taki sam jak typ operandu. Przepełnienie produkuje nieskończoność. Nieprawidłowe wartości wejściowe generują wartość NA.

Nazwa Znaczenie Komentarze
sqrt pierwiastek kwadratowy Ujemne operandy generują NA.
obcinanie, obcinanie obcinanie do liczby całkowitej Zaokrągla w kierunku zera do najbliższej wartości całkowitej.
podłoga podłoga Zaokrągla w kierunku nieskończoności ujemnej do najbliższej wartości całkowitej.
ceil, sufit sufit Zaokrągla w kierunku nieskończoności dodatniej do najbliższej wartości całkowitej.
runda zaokrąglanie bezstronne Zaokrągla do najbliższej wartości całkowitej. Gdy operand jest w połowie drogi między dwiema wartościami całkowitymi, powoduje to parzystą liczbę całkowitą.
Exp wykładnik Podnosi e do operandu.
ln, dziennik Logarytmu Tworzy logarytm naturalny (base e). Istnieje również dwie operandowe wersje dziennika do korzystania z innej bazy.
stopnie, stopnie radiany do stopni Mapy z radianów do stopni.
rad, radiany stopnie do radianów Mapuje od stopni do radianów.
grzech, sind sinus Pobiera sinus kąta. Funkcja sin zakłada, że operand jest w radianach, podczas gdy sind funkcja zakłada, że operand jest w stopniach.
cos, cosd cosinus Przyjmuje cosinus kąta. Funkcja cos zakłada, że operand jest w radianach, podczas gdy funkcja cosd zakłada, że operand jest w stopniach.
opalona, opalona Stycznej Przyjmuje tangens kąta. Funkcja tan zakłada, że operand jest w radianach, podczas gdy tand funkcja zakłada, że operand jest w stopniach.
sinh sinus hiperboliczny Pobiera sinus hiperboliczny operandu.
cosh cosinus hiperboliczny Przyjmuje cosinus hiperboliczny operandu.
tanh tangens hiperboliczny Pobiera tangens hiperboliczny operandu.
asin odwrotny sinus Przyjmuje odwrotny sinus operandu.
Acos odwrotny cosinus Bierze odwrotny cosinus swojego operandu.
atan odwrotny tangens Bierze odwrotny tangens jego operandu.

Funkcje binarne, które wymagają operandów zmiennoprzecinkowych, są wymienione w poniższej tabeli. Gdy typy operandów nie są takie same, operandy są promowane do odpowiedniego typu. Typ wyniku jest taki sam jak promowany typ operandu. Wartość operandu NA generuje wartość NA.

Nazwa Znaczenie Komentarze
dziennik logarytm z daną bazą Drugi operand jest bazą. Pierwsza jest wartością do podjęcia logarytmu.
atan2, atanyx określanie kąta Określa kąt między wartościami -pi i pi z podanych wartości y i x. Należy pamiętać, że y jest pierwszym operandem.

Funkcje tekstowe są wymienione w poniższej tabeli.

Nazwa Znaczenie Komentarze
len(x) długość tekstu Operand musi być tekstem. Wynik jest I4 wskazujący długość operandu. Jeśli operand ma wartość NA, wynik to NA.
lower(x), upper(x) małe lub wielkie litery Mapuje tekst na małe lub wielkie litery.
left(x, k), right(x, k) podciąg Pierwszy operand musi być tekstem, a drugi operand musi mieć wartość Int32. Jeśli drugi operand jest ujemny, jest traktowany jako przesunięcie od końca tekstu. Indeks skorygowany jest następnie zaciśnięty do 0 do len(x). Wynikiem są znaki z lewej lub prawej strony wynikowej pozycji.
mid(x, a, b) podciąg Pierwszy operand musi być tekstem, a pozostałe dwa operandy muszą mieć wartość Int32. Indeksy są przekształcane w taki sam sposób jak w przypadku funkcji po lewej i prawej stronie: wartości ujemne są traktowane jako przesunięcia od końca tekstu; te indeksy dostosowane są zaciskane do 0 do len(x). Drugi zaciśnięty indeks jest również zaciśnięty poniżej do pierwszego zaciśniętego indeksu. Wynikiem są znaki między tymi dwoma zaciśniętymi indeksami.
concat(x1, x2, ..., xn) łączenie Akceptuje dowolną liczbę operandów (w tym zero). Wszystkie operandy muszą być tekstem. Wynikiem jest łączenie wszystkich operandów w kolejności.

Metody

Nazwa Opis
Fit(IDataView)

Ten narzędzie do szacowania stosuje wyrażenie podane przez użytkownika (określone jako ciąg) do wartości kolumn wejściowych w celu wygenerowania nowych wartości kolumn wyjściowych.

GetOutputSchema(SchemaShape)

Ten narzędzie do szacowania stosuje wyrażenie podane przez użytkownika (określone jako ciąg) do wartości kolumn wejściowych w celu wygenerowania nowych wartości kolumn wyjściowych.

Metody rozszerzania

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

Dołącz punkt kontrolny buforowania do łańcucha narzędzia do szacowania. Zapewni to, że narzędzia do szacowania podrzędnego zostaną wytrenowane z buforowanych danych. Warto mieć punkt kontrolny buforowania, zanim trenerzy przejdą wiele danych.

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

Biorąc pod uwagę narzędzie do szacowania, zwróć obiekt opakowujący, który wywoła delegata po Fit(IDataView) wywołaniu. Często ważne jest, aby narzędzie do szacowania zwracało informacje o tym, co było odpowiednie, dlatego Fit(IDataView) metoda zwraca specjalnie wpisany obiekt, a nie tylko ogólne ITransformer. Jednak w tym samym czasie IEstimator<TTransformer> są często tworzone w potoki z wieloma obiektami, więc może być konieczne utworzenie łańcucha narzędzi do szacowania za pośrednictwem EstimatorChain<TLastTransformer> miejsca, w którym narzędzie do szacowania, dla którego chcemy uzyskać transformator jest pochowany gdzieś w tym łańcuchu. W tym scenariuszu możemy za pomocą tej metody dołączyć delegata, który będzie wywoływany po wywołaniu dopasowania.

Dotyczy

Zobacz też