Tensorflow'da bir sıcak kodlama nedir?


Yanıtlar:


14

Veri kümenizde kategorik bir özelliğiniz olduğunu varsayalım (örn. Renk). Ve örnekleriniz kırmızı, sarı veya mavi olabilir. Bu bağımsız değişkeni bir ML algoritmasına iletmek için, önce dizeleri yerine sayılara sahip olacak şekilde kodlamanız gerekir.

Böyle bir şey yapmanın en kolay yolu şu durumlarda bir eşleme oluşturmaktır:

kırmızı -> 1
sarı -> 2
mavi -> 3

ve her dizeyi eşlenmiş değeriyle değiştirin.

Ancak bu istenmeyen yan etkiler yaratabilir , ML modelimizde sayılarla uğraşırken mavi> sarı (çünkü 3> 2) veya kırmızı + sarı = mavi (1 + 2 = 3 olduğu) gibi . Modelin, bu verilerin kategorik olduğunu ve daha sonra tamsayı olarak eşlendiğini bilmesinin bir yolu yoktur.

Bu sorunun çözümü, N yeni özellikler oluşturduğumuz , N'nin orijinal özellikteki benzersiz değerlerin sayısı olduğu bir sıcak kodlamadır . Örneklemimizde N 3'e eşit olacaktır, çünkü 3 benzersiz renk (kırmızı, sarı ve mavi) var.

Bu özelliklerin her biri ikiliktir ve bu benzersiz değerlerden birine karşılık gelir . Örneğimizde, ilk özellik bize bu örneğin kırmızı olup olmadığını söyleyen ikili özellik, ikincisi sarı için aynı, üçüncüsü mavi için olacaktır.

Böyle bir dönüşümün bir örneği aşağıda gösterilmiştir:

Bu yaklaşım, veri kümesinin boyutluluğunu artırdığından, çok sayıda benzersiz değer alan bir özelliğimiz varsa, daha seyrek bir kodlama kullanmak isteyebiliriz (yukarıda sunduğum gibi).


3

derinlik: Bir sıcak boyutun derinliğini tanımlayan bir skaler.

endeksler: Bir indeks tensörü.

Bu örnek tensorflow belgelerinde verilmiştir.
1. Yalnızca indeksleri ve derinliği belirtme (on_value varsayılan değerleri 1 ve off_value 0'dır)

 indices = [0, 1, 2]
    depth = 3
    tf.one_hot(indices, depth)  # output: [3 x 3]
    # [[1., 0., 0.],
    #  [0., 1., 0.],
    #  [0., 0., 1.]]
  1. On_value ve off_value değerlerini belirtme
endeksler = [0, 2, -1, 1]
derinlik = 3
tf.one_hot (dizinler, derinlik, on_değeri = 5.0, off_value = 0.0, eksen = -1)
## çıktı: [4 x 3]
    # [[5.0, 0.0, 0.0], # one_hot (0)
    # [0.0, 0.0, 5.0], # one_hot (2)
    # [0.0, 0.0, 0.0], # one_hot (-1)
    # [0.0, 5.0, 0.0]] # one_hot (1)

Kodu GitHub'da da görebilirsiniz


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.