Bagikan melalui


ExpressionEstimator Kelas

Definisi

Estimator ini menerapkan ekspresi yang disediakan pengguna (ditentukan sebagai string) ke nilai kolom input untuk menghasilkan nilai kolom output baru.

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)
Warisan
ExpressionEstimator
Penerapan

Keterangan

Karakteristik Estimator

Apakah estimator ini perlu melihat data untuk melatih parameternya? Tidak
Jenis data kolom input float, double, int, long, bool atau teks.
Jenis data kolom output Dapat berupa float, double, int, long, bool atau teks, tergantung ekspresinya.

ExpressionTransformer yang dihasilkan membuat kolom baru, bernama seperti yang ditentukan dalam parameter nama kolom output, di mana ekspresi diterapkan ke nilai input. Paling banyak salah satu kolom input dapat berjenis VectorDataViewType, dan ketika input berisi kolom vektor, ekspresi dihitung secara independen pada setiap elemen vektor, untuk membuat output vektor dengan panjang yang sama dengan input tersebut.

Bahasa Ekspresi

Bahasa untuk estimator ekspresi harus nyaman bagi berbagai pengguna. Ini berbagi banyak kesamaan dengan beberapa bahasa populer. Ini peka huruf besar/kecil, mendukung beberapa jenis dan memiliki serangkaian operator dan fungsi yang kaya. Ini murni fungsional, dalam arti bahwa tidak ada nilai yang dapat diubah atau operasi bermutasi dalam bahasa. Ini tidak memiliki, tidak perlu, mekanisme pengecualian apa pun, sebaliknya menghasilkan nilai NA ketika nilai normal tidak sesuai. Ini diketik secara statis, tetapi semua jenis disimpulkan oleh pengkompilasi.

Sintaks

Sintaks untuk lambda terdiri dari daftar parameter diikuti dengan titik dua (:) atau panah (=>) diikuti oleh ekspresi. Daftar parameter dapat berupa pengidentifikasi tunggal atau daftar yang dipisahkan koma dari satu atau beberapa pengidentifikasi yang dikelilingi oleh tanda kurung.

Lambda:

  • parameter-list : ekspresi
  • parameter-list => ekspresi

parameter-list:

  • pengidentifikasi
  • (parameter-names)

parameter-names:

  • pengidentifikasi
  • pengidentifikasi , nama parameter

Ekspresi dapat menggunakan parameter, harfiah, operator, dengan ekspresi, dan fungsi.

Harfiah

  • Harfiah boolean benar dan salah.
  • Literal bilangan bulat mungkin desimal atau heksadesimal (misalnya, 0x1234ABCD). Mereka dapat dicukupkan dengan Anda atau U, menunjukkan tidak ditandatangani, serta l atau L, menunjukkan panjang (Int64). Penggunaan Anda atau U jarang terjadi dan hanya memengaruhi promosi nilai heksadesimal 32 bit tertentu, menentukan apakah konstanta dianggap sebagai nilai Int32 negatif atau nilai Int64 positif.
  • Harfiah titik mengambang menggunakan sintaks standar, termasuk notasi eksponensial (123.45e-37). Mereka dapat diakhiri dengan f atau F, menunjukkan presisi tunggal, atau d atau D, menunjukkan presisi ganda. Tidak seperti dalam C#, presisi default dari harfiah titik mengambang adalah presisi tunggal. Untuk menentukan presisi ganda, tambahkan d atau D.
  • Literal teks diapit dalam tanda kutip ganda dan mendukung mekanisme escape standar.

Operator

Operator bahasa ekspresi tercantum dalam tabel berikut, dalam urutan presendensi. Kecuali dinyatakan lain, operator biner dibiarkan asosiatif dan menyebarluaskan nilai NA (jika salah satu nilai operand adalah NA, hasilnya adalah NA). Umumnya, luapan nilai bilangan bulat menghasilkan NA, sementara luapan nilai floating point menghasilkan tak terbatas.

Operator Makna Aritas Komentar
​? : Bersyarat Ternary Kondisi ekspresi ? value1 : value2 diselesaikan ke value1 jika kondisi benar dan ke value2 jika kondisi salah. Kondisi harus boolean, sementara value1 dan value2 harus memiliki jenis yang kompatibel.
​?? coalesce Biner Ekspresi x ?? y menyelesaikan ke x jika x bukan NA, dan menyelesaikan ke y sebaliknya. Operan harus berupa Tunggal, atau kedua Ganda. Operator ini benar asosiatif.
| | Atau logika atau Biner Operan dan hasilnya adalah boolean. Jika satu operand benar, hasilnya benar, jika tidak, itu salah.
&& dan logika dan Biner Operan dan hasilnya adalah boolean. Jika satu operand salah, hasilnya salah, jika tidak, itu benar.
​==, =
!=, <>
<, <=
>, >=
setara
tidak sama dengan
kurang dari atau sama dengan
lebih besar dari atau sama dengan
Beberapa - Operator perbandingan adalah multi-aritas, yang berarti mereka dapat diterapkan ke dua atau lebih operan. Misalnya, a == b == c menghasilkan true jika a, b, dan c memiliki nilai yang sama. Operator yang tidak sama mengharuskan semua operan berbeda, jadi 1 != 2 != 1 salah. Untuk menguji apakah x non-negatif tetapi kurang dari 10, gunakan 0 <= x < 10. Tidak perlu menulis 0 <= x && x < 10, dan melakukannya tidak akan berfungsi juga. Operator yang tercantum pada baris yang sama dapat digabungkan dalam satu ekspresi, sehingga > b >= c legal, tetapi < b >= c tidak.
- Sama dengan dan tidak sama dengan berlaku untuk jenis operand apa pun, sementara operator yang diurutkan memerlukan operand numerik.
​+ - penambahan dan pengurangan Biner Penambahan dan pengurangan numerik dengan propagasi NA.
​* / % perkalian, pembagian, dan modulus Biner Perkalian numerik, pembagian, dan modulus dengan propagasi NA.
​- ! not negasi numerik dan logis tidak Unari Ini adalah operator awalan yang tidak biasa, negasi (-) yang membutuhkan operan numerik, dan bukan (!) yang memerlukan operand boolean.
​^ Kekuatan Biner Ini adalah eksponensial asosiatif yang tepat. Ini membutuhkan operan numerik. Untuk operan bilangan bulat, 0^0 menghasilkan 1.
​( ) pengelompokan tanda kurung Unari Arti standar.

Ekspresi With

Sintaks untuk with-expression adalah:

with-expression:

  • with( assignment-list ; expression )

daftar penugasan:

  • Tugas
  • assignment , assignment-list

Tugas:

  • ekspresi pengidentifikasi =

With-expression memperkenalkan satu atau beberapa nilai bernama. Misalnya, ekspresi berikut mengonversi suhu celcius menjadi fahrenheit, lalu menghasilkan pesan berdasarkan apakah fahrenheit terlalu rendah atau tinggi.

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

Ekspresi untuk satu tugas dapat mereferensikan pengidentifikasi yang diperkenalkan oleh penugasan sebelumnya, seperti dalam contoh ini yang mengembalikan -1, 0, atau 1 alih-alih pesan:

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

Seperti yang ditunjukkan di atas, with-expression berguna saat nilai ekspresi diperlukan beberapa kali dalam ekspresi yang lebih besar. Ini juga berguna saat berhadapan dengan konstanta yang rumit atau signifikan:

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

Ini menghitung hari dalam seminggu dari jumlah kutu (sebagai Int64) sejak periode DateTime .Net standar (01/01/0001 dalam kalender Gregorian yang ideal). Penugasan digunakan untuk jumlah kutu dalam detik, jumlah tanda centang dalam satu jam, jumlah tanda centang dalam setahun, dan hari dalam seminggu untuk periode tersebut. Untuk contoh ini, kami ingin memetakan Hari Minggu ke nol, jadi, karena zamannya adalah hari Senin, kami menetapkan dayEpoch ke 1. Jika zaman diubah atau kami ingin memetakan hari yang berbeda dalam seminggu menjadi nol, kami hanya akan mengubah dayEpoch. Perhatikan bahwa ticksPerSecond didefinisikan sebagai 10000000L, untuk menjadikannya nilai Int64 (bilangan bulat 8 byte). Tanpa akhiran L, ticksPerDay akan meluapkan rentang Int32.

Fungsi

Transformasi ekspresi mendukung banyak fungsi yang berguna.

Fungsi unary umum yang dapat menerima operand dari jenis apa pun tercantum dalam tabel berikut.

Nama Makna Komentar
isna uji untuk na Mengembalikan nilai boolean yang menunjukkan apakah operand adalah nilai NA.
Na nilai na Mengembalikan nilai NA dengan jenis yang sama dengan operand (baik float atau double). Perhatikan bahwa ini tidak mengevaluasi operand, ini hanya menggunakan operand untuk menentukan jenis NA yang akan dikembalikan, dan penentuan itu terjadi pada waktu kompilasi.
Default nilai default Mengembalikan nilai default dengan jenis yang sama dengan operand. Misalnya, untuk memetakan nilai NA ke nilai default, gunakan x ?? default(x). Perhatikan bahwa ini tidak mengevaluasi operand, ini hanya menggunakan operand untuk menentukan jenis nilai default yang akan dikembalikan, dan penentuan itu terjadi pada waktu kompilasi. Untuk jenis numerik, defaultnya adalah nol. Untuk boolean, defaultnya adalah false. Untuk teks, defaultnya kosong.

Fungsi konversi unary tercantum dalam tabel berikut. Operand NA menghasilkan NA, atau melempar jika jenisnya tidak mendukungnya. Konversi yang tidak berhasil, atau luapan juga menghasilkan NA atau pengecualian. Kasus yang paling umum adalah ketika mengonversi dari teks, yang menggunakan penguraian konversi standar. Saat mengonversi dari nilai floating point (float atau double) ke nilai bilangan bulat (Int32 atau Int64), konversi melakukan operasi pemotongan (membulatkan ke nol).

Nama Makna Komentar
bool konversi ke Boolean Pengoperasi harus berupa teks atau boolean.
Int konversi ke Int32 Input mungkin dari jenis apa pun.
Lama konversi ke Int64 Input mungkin dari jenis apa pun.
tunggal, float konversi ke Single Input mungkin dari jenis apa pun.
Double konversi ke Double Input mungkin dari jenis apa pun.
Teks konversi ke teks Input mungkin dari jenis apa pun. Ini menghasilkan representasi teks default.

Fungsi unary yang memerlukan operand numerik tercantum dalam tabel berikut. Jenis hasilnya sama dengan jenis operand. Nilai operand NA menghasilkan NA.

Nama Makna Komentar
Abs nilai absolut Menghasilkan nilai absolut operand.
Tanda tanda (-1, 0, 1) Menghasilkan -1, 0, atau 1 tergantung pada apakah operan negatif, nol, atau positif.

Fungsi biner yang memerlukan operand numerik tercantum dalam tabel berikut. Ketika jenis operand tidak sama, operand dipromosikan ke jenis yang sesuai. Jenis hasilnya sama dengan jenis operand yang dipromosikan. Nilai operand NA menghasilkan NA.

Nama Makna Komentar
Min Minimum Menghasilkan minimum operan.
Maks maksimum Menghasilkan maksimum operan.

Fungsi unary yang memerlukan operand floating point tercantum dalam tabel berikut. Jenis hasilnya sama dengan jenis operand. Luapan menghasilkan tak terbatas. Nilai input tidak valid menghasilkan NA.

Nama Makna Komentar
sqrt akar kuadrat Operan negatif menghasilkan NA.
memotong, memotong memotong ke bilangan bulat Membulatkan ke arah nol ke nilai bilangan bulat terdekat.
Lantai Lantai Membulatkan ke arah tak terbatas negatif ke nilai bilangan bulat terdekat.
langit-langit, langit-langit Langit Membulatkan ke arah tak terbatas positif ke nilai bilangan bulat terdekat.
Putaran pembulatan tidak bias Membulatkan ke nilai bilangan bulat terdekat. Ketika operand setengah jalan antara dua nilai bilangan bulat, ini menghasilkan bilangan bulat genap.
Exp Eksponensial Mengangkat e ke operand.
Dalam, log Logaritma Menghasilkan logaritma alami (basis e). Ada juga versi log dua operand untuk menggunakan basis yang berbeda.
deg, derajat radian ke derajat Peta dari radian ke derajat.
rad, radian derajat ke radian Peta dari derajat ke radian.
dosa, berdosa Sinus Mengambil sinus sudut. Fungsi dosa mengasumsikan operan dalam radian, sementara fungsi sind mengasumsikan bahwa operan dalam derajat.
cos, cosd Kosinus Mengambil kosinus sudut. Fungsi cos mengasumsikan operand dalam radian, sementara fungsi cosd mengasumsikan bahwa operan berada dalam derajat.
tan, tand Tangen Mengambil tangen sudut. Fungsi tan mengasumsikan operand dalam radian, sementara fungsi tand mengasumsikan bahwa operan berada dalam derajat.
sinh sinus hiperbolik Mengambil sinus hiperbolik dari operand-nya.
cosh kosinus hiperbolik Mengambil kosinus hiperbolik dari operannya.
tanh tangen hiperbolik Mengambil tangen hiperbolik dari operannya.
asin sinus terbalik Mengambil sinus terbalik dari operannya.
acos kosinus terbalik Mengambil kosinus terbalik dari operand-nya.
Atan tangen terbalik Mengambil tangen terbalik dari operannya.

Fungsi biner yang memerlukan operand titik mengambang tercantum dalam tabel berikut. Ketika jenis operand tidak sama, operand dipromosikan ke jenis yang sesuai. Jenis hasilnya sama dengan jenis operand yang dipromosikan. Nilai operand NA menghasilkan NA.

Nama Makna Komentar
Log logaritma dengan basis yang diberikan Operan kedua adalah basis. Yang pertama adalah nilai untuk mengambil logaritma.
atan2, atanyx menentukan sudut Menentukan sudut antara -pi dan pi dari nilai y dan x yang diberikan. Perhatikan bahwa y adalah operand pertama.

Fungsi teks tercantum dalam tabel berikut.

Nama Makna Komentar
len(x) panjang teks Operand harus berupa teks. Hasilnya adalah I4 yang menunjukkan panjang operand. Jika operand adalah NA, hasilnya adalah NA.
lower(x), upper(x) huruf kecil atau atas Memetakan teks ke huruf kecil atau atas.
kiri(x, k), kanan(x, k) Substring Operand pertama harus berupa teks dan operand kedua harus Int32. Jika operand kedua negatif, itu diperlakukan sebagai offset dari akhir teks. Indeks yang disesuaikan ini kemudian dijepit ke 0 untuk len(x). Hasilnya adalah karakter di sebelah kiri atau kanan dari posisi yang dihasilkan.
mid(x, a, b) Substring Operand pertama harus berupa teks dan dua operan lainnya harus Int32. Indeks diubah dengan cara yang sama seperti untuk fungsi kiri dan kanan: nilai negatif diperlakukan sebagai offset dari akhir teks; indeks yang disesuaikan ini dijepit ke 0 untuk len(x). Indeks terjepit kedua juga dijepit di bawah ini ke indeks terjepit pertama. Hasilnya adalah karakter antara kedua indeks yang dijepit ini.
concat(x1, x2, ..., xn) Rangkaian Ini menerima jumlah operand arbitrer (termasuk nol). Semua operan harus berupa teks. Hasilnya adalah perangkaian semua operan, secara berurutan.

Metode

Fit(IDataView)

Estimator ini menerapkan ekspresi yang disediakan pengguna (ditentukan sebagai string) ke nilai kolom input untuk menghasilkan nilai kolom output baru.

GetOutputSchema(SchemaShape)

Estimator ini menerapkan ekspresi yang disediakan pengguna (ditentukan sebagai string) ke nilai kolom input untuk menghasilkan nilai kolom output baru.

Metode Ekstensi

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

Tambahkan 'titik pemeriksaan penembolokan' ke rantai estimator. Ini akan memastikan bahwa estimator hilir akan dilatih terhadap data cache. Sangat membantu untuk memiliki titik pemeriksaan penembolokan sebelum pelatih yang mengambil beberapa data berlalu.

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

Mengingat estimator, kembalikan objek pembungkus yang akan memanggil delegasi setelah Fit(IDataView) dipanggil. Seringkali penting bagi estimator untuk mengembalikan informasi tentang apa yang cocok, itulah sebabnya Fit(IDataView) metode mengembalikan objek yang di ketik secara khusus, bukan hanya umum ITransformer. Namun, pada saat yang sama, IEstimator<TTransformer> sering dibentuk menjadi alur dengan banyak objek, jadi kita mungkin perlu membangun rantai estimator melalui EstimatorChain<TLastTransformer> tempat estimator yang kita inginkan agar transformator dikubur di suatu tempat dalam rantai ini. Untuk skenario itu, kita dapat melalui metode ini melampirkan delegasi yang akan dipanggil setelah fit dipanggil.

Berlaku untuk

Lihat juga