Udostępnij za pośrednictwem


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? Nie
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, bool lub tekst, w zależności od wyrażenia.

Wynikowy wyrażenieTransformer 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ę wektora, wyrażenie jest obliczane niezależnie od każdego elementu wektora, aby utworzyć dane wyjściowe wektora o tej samej długości co 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 funkcjonalność, w tym sensie, że w języku nie ma modyfikowalnych wartości ani operacjimutowania. Nie ma żadnego mechanizmu wyjątku ani nie potrzebuje, zamiast tego generuje wartości NA, gdy wartość normalna nie jest odpowiednia. Jest on statycznie typowany, ale wszystkie typy są wnioskowane przez kompilator.

Składnia

Składnia lambda składa się z listy parametrów, po której następuje dwukropek (:) lub strzałka (=>), a następnie wyrażenie. Lista parametrów może być pojedynczym identyfikatorem lub rozdzielaną przecinkami listą co najmniej jednego identyfikatora otoczonego nawiasami.

Lambda:

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

parametr-lista:

  • Identyfikator
  • (nazwy parametrów)

nazwa-parametrów:

  • Identyfikator
  • identyfikator , nazwy parametrów

Wyrażenie może używać parametrów, literałów, operatorów, wyrażeń i funkcji.

Literały

  • Literały logiczne są prawdziwe i fałszywe.
  • Literały całkowite mogą być dziesiętne lub szesnastkowe (np. 0x1234ABCD). Mogą one być sufiksem użytkownika lub U, wskazując niepodpisane, a także l lub L, wskazujące długie (Int64). Użycie użytkownika lub U jest rzadkie i ma wpływ 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, wskazując 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.

Operatory

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

Operator Znaczenie Argumentów Komentarze
​? : Warunkowe Trójskładnikowych 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ć logiczny, a wartość1 i wartość2 muszą być zgodnego typu.
​?? Łączonej Binarnym Wyrażenie x ?? y rozpoznaje wartość x, jeśli x nie jest NA, i rozpoznaje wartość y w przeciwnym razie. Operandy muszą być zarówno singli, jak i oba podwójne. Ten operator ma rację asocjacji.
| | Lub logiczne lub Binarnym 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 Binarnym Operandy i wynik są wartościami logicznymi. Jeśli jeden operand ma wartość false, wynik jest fałszywy, w przeciwnym razie jest to prawda.
​==, =
!=, <>
<, <=
>, >=
equals
nie równa się
mniejsze niż lub równe
większe niż lub równe
Wielu - Operatory porównania są wielo arity, co oznacza, że można je zastosować do co najmniej dwóch operandów. Na przykład a == b == c powoduje wartość true, jeśli a, b i c mają tę samą wartość. Operator nie równy wymaga, aby wszystkie operandy mogły być odrębne, więc wartość 1 != 2 != 1 jest fałszem. Aby sprawdzić, czy x jest nie 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ówne i nie równe mają zastosowania do dowolnego typu operandu, podczas gdy uporządkowane operatory wymagają operandów liczbowych.
​+ - dodawanie i odejmowanie Binarnym Dodawanie i odejmowanie liczbowe z propagacją NA.
​* / % mnożenie, dzielenie i modulus Binarnym Mnożenie liczbowe, dzielenie i modulus z propagacją NA.
​- ! not negacja liczbowa, a nie logiczna Jednoargumentowy Są to operatory prefiksów jednoargumentowych, negacja (-) wymagająca operandu liczbowego, a nie (!) wymagającego operandu logicznego.
​^ Zasilania Binarnym Jest to właściwa asocjacyjna wykładnik. Wymaga to operandów liczbowych. W przypadku operandów całkowitych 0^0 generuje 1.
​( ) grupowanie nawiasów Jednoargumentowy Znaczenie standardowe.

Wyrażenie z wyrażeniem

Składnia wyrażenia with-expression to:

z wyrażeniem:

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

lista przydziałów:

  • Przypisania
  • przypisanie , lista przydziałów

Przypisania:

  • wyrażenie identyfikatora =

Wyrażenie with 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 with-expression jest przydatne, gdy wartość wyrażenia jest potrzebna wiele razy w większym wyrażeniu. Jest to również przydatne w przypadku radzenia sobie ze skomplikowanymi lub znaczącymi stałymi:

    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 do liczby znaczników w sekundzie, liczby kleszczy w ciągu godziny, liczby kleszczy w roku i dnia tygodnia dla epoki. W tym przykładzie chcemy zamapować niedzielę na zero, więc ponieważ epoka to poniedziałek, ustawiliśmy wartość dayEpoch na 1. Jeśli epoka została zmieniona lub chcieliśmy zamapować inny dzień tygodnia na zero, po prostu zmienilibyśmy dzieńEpoch. Należy pamiętać, że znacznikiPerSecond jest definiowane jako 100000000L, aby była to wartość Int64 (liczba całkowita 8 bajtów). Bez sufiksu L znacznikiPerDay przepełnią zakres Int32.

Funkcje

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 aplikacji 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 operandu, używa tylko operandu do określenia typu NA do zwrócenia, a ta determinacja ma miejsce w czasie kompilacji.
Domyślny wartość domyślna Zwraca wartość domyślną tego samego typu co operand. Aby na przykład zamapować wartości NA na wartości domyślne, użyj x ?? default(x). Należy pamiętać, że nie oblicza 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 wartość NA lub zgłasza wartość , jeśli typ nie obsługuje go. Konwersja, która nie powiedzie się lub przepełnienie powoduje również wyjątek NA 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 konwertuj na wartość logiczną Operand musi być tekstem lub wartością logiczną.
Int konwertowanie na Int32 Dane wejściowe mogą być dowolnego typu.
Długi konwertowanie na Int64 Dane wejściowe mogą być dowolnego typu.
pojedynczy, zmiennoprzecinkowy konwertowanie na Single Dane wejściowe mogą być dowolnego typu.
Podwójne konwertowanie na Double Dane wejściowe mogą być dowolnego typu.
Tekst konwertowanie na tekst Dane wejściowe mogą być dowolnego typu. Spowoduje to wygenerowanie 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 Minimalne Tworzy minimalną liczbę 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 wytwarza 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łogi Podłogi Zaokrągla w kierunku ujemnej nieskończoności do najbliższej wartości całkowitej.
ceil, sufit Sufit Zaokrągla w kierunku dodatniej nieskończoności do najbliższej wartości całkowitej.
Okrągłe zaokrąglanie niestronne 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ładniczej Podnosi e do operandu.
ln, log Logarytmu Tworzy logarytm naturalny (podstawowy 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 Mapy z stopni do radianów.
grzech, grzech 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 Pobiera 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 Przyjmuje sinus hiperboliczny operandu.
Cosh cosinus hiperboliczny Przyjmuje cosinus hiperboliczny swojego operandu.
Tanh tangens hiperboliczny Przyjmuje tangens hiperboliczny operandu.
Asin odwrotny sinus Przyjmuje odwrotny sinus operandu.
Acos odwrotność cosinusu Bierze odwrotny cosinus swojego operandu.
Atan odwrotność tangensu Przyjmuje 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
Dziennika logarytm z daną bazą Drugi operand jest bazą. Pierwsza to wartość, która ma przyjmować logarytm.
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. Wynikiem jest I4 wskazująca 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 być Int32. Jeśli drugi operand jest ujemny, jest traktowany jako przesunięcie od końca tekstu. Indeks skorygowany jest następnie zaciskany do 0 do len(x). Wynikiem są znaki po lewej lub prawej stronie wynikowej pozycji.
mid(x, a, b) Podciąg Pierwszy operand musi być tekstem, a pozostałe dwa operandy muszą być 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 skorygowane indeksy 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

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

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 względem buforowanych danych. Warto mieć punkt kontrolny buforowania, zanim trenerzy przejmą 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ólną ITransformerwartość . Jednak w tym samym czasie IEstimator<TTransformer> często są 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 zostanie wywołany po wywołaniu dopasowania.

Dotyczy

Zobacz też