Aracılığıyla paylaş


ExpressionEstimator Sınıf

Tanım

Bu tahmin aracı, yeni çıkış sütunu değerleri oluşturmak için giriş sütunu değerlerine kullanıcı tarafından sağlanan bir ifadeyi (dize olarak belirtilen) uygular.

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)
Devralma
ExpressionEstimator
Uygulamalar

Açıklamalar

Tahmin Aracı Özellikleri

Bu tahmin aracının parametrelerini eğitmek için verilere bakması gerekiyor mu? No
Giriş sütunu veri türü float, double, int, long, bool veya text.
Çıkış sütunu veri türü İfadeye bağlı olarak float, double, int, long, bool veya text olabilir.

Sonuçta elde edilen ExpressionTransformer , ifadenin giriş değerlerine uygulandığı çıkış sütunu adı parametrelerinde belirtilen adlı yeni bir sütun oluşturur. Giriş sütunlarından en fazla biri VectorDataViewType türünde olabilir ve giriş bir vektör sütunu içerdiğinde ifade, bu girişle aynı uzunlukta bir vektör çıkışı oluşturmak için vektördeki her öğe üzerinde bağımsız olarak hesaplanır.

İfade Dili

İfade tahmin aracının dili çok çeşitli kullanıcılar için rahat olmalıdır. Bazı popüler dillerle birçok benzerliği paylaşır. Büyük/küçük harfe duyarlıdır, birden çok türü destekler ve zengin işleç ve işlev kümesine sahiptir. Yalnızca işlevseldir, yani dilde değiştirilebilir değer veya kapatma işlemi yoktur. Normal bir değer uygun olmadığında NA değerleri üretmek yerine herhangi bir özel durum mekanizmasına sahip değildir. Statik olarak yazılmıştır, ancak tüm türler derleyici tarafından çıkarılır.

Syntax

Lambda söz dizimi bir parametre listesinden ve ardından iki nokta üst üste (:) veya ok (=>) ve ardından bir ifadeden oluşur. Parametre listesi tek bir tanımlayıcı veya parantez içinde bir veya daha fazla tanımlayıcının virgülle ayrılmış listesi olabilir.

Lambda:

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

parametre-listesi:

  • Tanımlayıcı
  • (parametre-adları)

parametre-adları:

  • Tanımlayıcı
  • tanımlayıcı , parametre-adları

İfade parametreler, değişmez değerler, işleçler, ifadeler ve işlevler kullanabilir.

Değişmez Değerler

  • Boole değişmez değerleri true ve false değerleridir.
  • Tamsayı değişmez değerleri ondalık veya onaltılık (örneğin, 0x1234ABCD) olabilir. Bunlar size veya U'ya işaretsiz, l veya L ile uzun (Int64) belirten son eklenebilir. Sizin veya U'nun kullanımı nadirdir ve yalnızca belirli 32 bit onaltılık değerlerin yükseltilmesine etki eder ve sabitin negatif bir Int32 değeri mi yoksa pozitif bir Int64 değeri olarak mı kabul edildiğini belirler.
  • Kayan nokta değişmez değerleri, üstel gösterimi (123,45e-37) dahil olmak üzere standart söz dizimini kullanır. Çift duyarlığı gösteren tek duyarlık veya d veya D ile f veya F soneki eklenebilir. C# dilinden farklı olarak, kayan nokta sabitinin varsayılan duyarlığı tek duyarlıktır. Çift duyarlık belirtmek için d veya D'yi ekin.
  • Metin değişmez değerleri çift tırnak içine alınır ve standart kaçış mekanizmalarını destekler.

İşleçler

İfade dilinin işleçleri, aşağıdaki tabloda, bağımlılık sırasına göre listelenmiştir. Aksi belirtilmedikçe, ikili işleçler ilişkilendirici olarak bırakılır ve NA değerlerini yayabilir (işlenen değerlerden biri NA ise sonuç NA olur). Genel olarak, tamsayı değerlerinin taşması NA üretirken, kayan nokta değerlerinin taşması sonsuzluk üretir.

Operatör Anlamı Parametre Açıklamalar
​? : Koşullu Üçlü İfade koşulu? value1 : value2, koşul true ise value1, koşul yanlışsa değer2 olarak çözümleniyor. Koşul boole, değer1 ve değer2 ise uyumlu türde olmalıdır.
​?? Coalesce Ikili x ?? ifadesi y, x NA değilse x olarak, aksi takdirde y olarak çözümler. İşlenenlerin her ikisi de Tek veya çift olmalıdır. Bu işleç doğru ilişkilendiricidir.
| | Veya mantıksal veya Ikili İşlenenler ve sonuç boole değeridir. Bir işlenen true ise sonuç true olur, aksi takdirde false olur.
&& ve mantıksal ve Ikili İşlenenler ve sonuç boole değeridir. Bir işlenen false ise sonuç false olur, aksi takdirde doğru olur.
​==, =
!=, <>
<, <=
>, >=
equals
eşit değil
küçüktür veya eşittir
büyüktür veya eşittir
Birden çok - Karşılaştırma işleçleri çok yönlü olduğundan iki veya daha fazla işlenene uygulanabilir. Örneğin, a , b ve c aynı değere sahipse a == b == c true sonucunu verir. Eşit değil işleci, tüm işlenenlerin ayrı olmasını gerektirir, bu nedenle 1 != 2 != 1 yanlış olur. X'in negatif değil ama 10'dan küçük olup olmadığını test etmek için 0 <= x < 10 kullanın. 0 <= x && x < 10 yazmanız gerekmez ve bunu yapmak da çalışmaz. Aynı satırda listelenen işleçler tek bir ifadede birleştirilebilir, bu nedenle > b >= c yasaldır, ancak < b >= c değildir.
- Eşittir ve eşit değildir, herhangi bir işlenen türüne uygulanırken, sıralı işleçler sayısal işlenenler gerektirir.
​+ - toplama ve çıkarma Ikili NA yayma ile sayısal toplama ve çıkarma.
​* / % çarpma, bölme ve modül Ikili NA yayma ile sayısal çarpma, bölme ve modül.
​- ! not sayısal olumsuzlama ve mantıksal olmayan Tekli Bunlar birli ön ek işleçleri, sayısal işlenen gerektiren olumsuzlama (-) ve boole işleneni gerektirmeyen (!) işleçlerdir.
​^ Güç Ikili Bu doğru ilişkilendirilebilir üsselleştirmedir. Sayısal işlenenler gerektirir. Tamsayı işlenenleri için 0^0 1 üretir.
​( ) parantez içinde gruplandırma Tekli Standart anlamı.

With İfadesi

with-ifadesi için söz dizimi:

with-expression:

  • with( atama-listesi ; ifade )

atama listesi:

  • Atama
  • assignment , assignment-list

Atama:

  • tanımlayıcı = ifadesi

with-ifadesi bir veya daha fazla adlandırılmış değer tanıtır. Örneğin, aşağıdaki ifade bir santigrat sıcaklığını fahrenheit'e dönüştürür ve ardından fahrenheit değerinin çok düşük veya yüksek olmasına bağlı olarak bir ileti oluşturur.

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

Bir atamanın ifadesi, önceki atamalar tarafından tanıtılan tanımlayıcılara başvurabilir; örneğin, iletiler yerine -1, 0 veya 1 döndürür:

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

Yukarıda gösterildiği gibi, ifade değeri daha büyük bir ifadede birden çok kez gerektiğinde with-ifadesi yararlıdır. Karmaşık veya önemli sabitlerle uğraşırken de yararlıdır:

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

Bu işlem, standart .Net DateTime döneminin (idealleştirilmiş Gregoryen takvimde 01/01/0001) bu yana olan kene sayısından (Int64 olarak) haftanın gününü hesaplar. Atamalar saniyedeki kene sayısı, bir saat içindeki kene sayısı, bir yıldaki kene sayısı ve dönem için haftanın günü için kullanılır. Bu örnekte Pazar'ı sıfırla eşlemek istiyoruz, dolayısıyla dönem Pazartesi olduğundan dayEpoch değerini 1 olarak ayarlayacağız. Dönem değiştirildiyse veya haftanın farklı bir gününü sıfırla eşlemek isteseydik dayEpoch değerini değiştirirdik. TicksPerSecond değerinin bir Int64 değeri (8 bayt tamsayı) olması için 100000000L olarak tanımlandığını unutmayın. L soneki olmadan, ticksPerDay Int32'nin aralığını taşacak.

İşlevler

İfade dönüşümü birçok yararlı işlevi destekler.

Herhangi bir türün işlenenini kabul edebilen genel birli işlevler aşağıdaki tabloda listelenmiştir.

Adı Anlamı Yorum
isna na için test etme İşlenenin bir NA değeri olup olmadığını gösteren bir boole değeri döndürür.
Na na değeri İşlenenle aynı türde (float veya double) NA değerini döndürür. Bunun işleneni değerlendirmediğini, yalnızca döndürülecek NA türünü belirlemek için işleneni kullandığını ve bu belirlemenin derleme zamanında gerçekleştiğini unutmayın.
Varsayılan varsayılan değer İşlenenle aynı türde varsayılan değeri döndürür. Örneğin, NA değerlerini varsayılan değerlerle eşlemek için x ?? kullanın. default(x). Bunun işleneni değerlendirmediğini, yalnızca döndürülecek varsayılan değerin türünü belirlemek için işleneni kullandığını ve bu belirlemenin derleme zamanında gerçekleştiğini unutmayın. Sayısal türler için varsayılan değer sıfırdır. Boole değeri için varsayılan değer false'tur. Metin için varsayılan değer boş olur.

Birli dönüştürme işlevleri aşağıdaki tabloda listelenmiştir. BIR NA işleneni bir NA üretir veya türü desteklemiyorsa atar. Başarılı olmayan veya taşan bir dönüştürme de NA veya özel durumla sonuç verir. Bunun en yaygın örneği, standart dönüştürme ayrıştırma kullanan metinden dönüştürmedir. Kayan nokta değerinden (float veya double) tamsayı değerine (Int32 veya Int64) dönüştürme işlemi bir kesme işlemi yapar (sıfıra yuvarlanır).

Adı Anlamı Yorum
Bool Boole değerine dönüştürme İşlenen metin veya boole olmalıdır.
Int dönüştürme Int32 Giriş herhangi bir türde olabilir.
Uzun dönüştürme Int64 Giriş herhangi bir türde olabilir.
tek, kayan dönüştürme Single Giriş herhangi bir türde olabilir.
Çift dönüştürme Double Giriş herhangi bir türde olabilir.
Metin metne dönüştürme Giriş herhangi bir türde olabilir. Bu, varsayılan bir metin gösterimi oluşturur.

Sayısal işlenen gerektiren birli işlevler aşağıdaki tabloda listelenmiştir. Sonuç türü işlenen türüyle aynıdır. BIR NA işlenen değeri NA üretir.

Adı Anlamı Yorum
Abs mutlak değer İşlenenin mutlak değerini üretir.
Işareti işareti (-1, 0, 1) İşlenenin negatif, sıfır veya pozitif olmasına bağlı olarak -1, 0 veya 1 üretir.

Sayısal işlenenler gerektiren ikili işlevler aşağıdaki tabloda listelenmiştir. İşlenen türleri aynı olmadığında, işlenenler uygun bir türe yükseltilir. Sonuç türü, yükseltilen işlenen türüyle aynıdır. BIR NA işlenen değeri NA üretir.

Adı Anlamı Yorum
Dk Minimum İşlenenlerin en azını üretir.
Max maksimum İşlenenlerin en yüksek sayısını üretir.

Kayan nokta işleneni gerektiren birli işlevler aşağıdaki tabloda listelenmiştir. Sonuç türü işlenen türüyle aynıdır. Taşma sonsuzluk üretir. Geçersiz giriş değerleri NA üretir.

Adı Anlamı Yorum
Karekök Karekök Negatif işlenenler NA üretir.
trunc, truncate tamsayıya kesme Sıfıra doğru en yakın tamsayı değerine yuvarlar.
Kat Kat Negatif sonsuzluğa doğru en yakın tamsayı değerine yuvarlar.
ceil, tavan Tavan Pozitif sonsuzluğa doğru en yakın tamsayı değerine yuvarlar.
Yuvarlak taraflı olmayan yuvarlama En yakın tamsayı değerine yuvarlar. İşlenen iki tamsayı değeri arasında yarı yolda olduğunda, bu çift tamsayıyı üretir.
Exp Üstel e'yi işlenene yükseltir.
ln, log Logaritma Doğal (temel e) logaritması üretir. Ayrıca farklı bir taban kullanmak için günlüğün iki işlenen sürümü vardır.
derece, derece radyandan dereceye Radyandan dereceye eşler.
radyan, radyan radyan derece Derecelerden radyanlara eşler.
sin, sind Sinüs Bir açının sinüsünü alır. sin işlevi işlenenin radyan cinsinden olduğunu varsayarken, sind işlevi işlenenin derece cinsinden olduğunu varsayar.
cos, cosd Kosinüs Bir açının kosinüsünü alır. cos işlevi işlenenin radyan cinsinden olduğunu varsayarken, cosd işlevi işlenenin derece cinsinden olduğunu varsayar.
tan, tand Teğet Bir açının tanjantını alır. tan işlevi işlenenin radyan cinsinden olduğunu varsayarken tand işlevi işlenenin derece cinsinden olduğunu varsayar.
Sinh hiperbolik sinüs İşleneninin hiperbolik sinüsünü alır.
Cosh hiperbolik kosinüs İşleneninin hiperbolik kosinüsünü alır.
Tanh hiperbolik tanjant İşleneninin hiperbolik tanjantını alır.
Asin ters sinüs İşlenenin ters sinüsünü alır.
Acos ters kosinüsü İşlenenin ters kosinüsünü alır.
atan ters tanjant İşleneninin ters tanjantını alır.

Kayan nokta işlenenleri gerektiren ikili işlevler aşağıdaki tabloda listelenmiştir. İşlenen türleri aynı olmadığında, işlenenler uygun bir türe yükseltilir. Sonuç türü, yükseltilen işlenen türüyle aynıdır. BIR NA işlenen değeri NA üretir.

Adı Anlamı Yorum
Günlük verilen taban ile logaritma İkinci işlenen tabandır. İlki, logaritması alınacak değerdir.
atan2, atanyx açıyı belirleme Verilen y ve x değerlerinden -pi ve pi arasındaki açıyı belirler. y'nin ilk işlenen olduğunu unutmayın.

Metin işlevleri aşağıdaki tabloda listelenmiştir.

Adı Anlamı Yorum
len(x) metnin uzunluğu İşlenen metin olmalıdır. Sonuç, işlenenin uzunluğunu gösteren bir I4 değeridir. İşlenen NA ise, sonuç NA olur.
lower(x), upper(x) küçük veya büyük harf Metni küçük veya büyük harfle eşler.
left(x, k), right(x, k) Dize İlk işlenen metin, ikinci işlenen int32 olmalıdır. İkinci işlenen negatifse, metnin sonundan uzaklık olarak kabul edilir. Bu ayarlı dizin daha sonra 0'a uzunluk(x) olarak sıkıştırılır. Sonuç, sonuçta elde edilen konumun solundaki veya sağındaki karakterlerdir.
mid(x, a, b) Dize İlk işlenen metin, diğer iki işlenen int32 olmalıdır. Dizinler, sol ve sağ işlevlerle aynı şekilde dönüştürülür: negatif değerler metnin sonundan uzaklık olarak kabul edilir; bu ayarlanmış endeksler 0'a uzunluk(x) kadar sıkıştırılır. İkinci kenetlenmiş dizin de aşağıda ilk kenetlenmiş dizine kenetlenir. Sonuç, bu iki kenetlenmiş dizin arasındaki karakterlerdir.
concat(x1, x2, ..., xn) Birleştirme Bu, rastgele sayıda işleneni (sıfır dahil) kabul eder. Tüm işlenenler metin olmalıdır. Sonuç, sırasıyla tüm işlenenlerin birleştirilmiş olmasıdır.

Yöntemler

Fit(IDataView)

Bu tahmin aracı, yeni çıkış sütunu değerleri oluşturmak için giriş sütunu değerlerine kullanıcı tarafından sağlanan bir ifadeyi (dize olarak belirtilen) uygular.

GetOutputSchema(SchemaShape)

Bu tahmin aracı, yeni çıkış sütunu değerleri oluşturmak için giriş sütunu değerlerine kullanıcı tarafından sağlanan bir ifadeyi (dize olarak belirtilen) uygular.

Uzantı Metotları

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

Tahmin zincirine 'önbelleğe alma denetim noktası' ekleme. Bu, aşağı akış tahmincilerinin önbelleğe alınan verilere karşı eğitilmesini sağlar. Birden çok veri geçiren eğitmenlerden önce bir önbelleğe alma kontrol noktası olması yararlıdır.

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

Tahmin aracı verildiğinde, bir temsilci çağrıldıktan sonra Fit(IDataView) çağıracak bir sarmalama nesnesi döndürün. Tahmin aracının neyin uygun olduğu hakkında bilgi döndürmesi genellikle önemlidir; bu nedenle Fit(IDataView) yöntem yalnızca genel ITransformerbir nesne yerine özel olarak yazılan bir nesne döndürür. Bununla birlikte, aynı zamanda, IEstimator<TTransformer> genellikle birçok nesne içeren işlem hatları halinde oluşturulur, bu nedenle transformatörü almak istediğimiz tahmin aracının EstimatorChain<TLastTransformer> bu zincirde bir yere gömülü olduğu bir tahmin aracı zinciri oluşturmamız gerekebilir. Bu senaryo için, bu yöntem aracılığıyla sığdır çağrıldıktan sonra çağrılacak bir temsilci ekleyebiliriz.

Şunlara uygulanır

Ayrıca bkz.