Keras ile çok sınıflı sınıflandırmada dize etiketleri ile nasıl başa çıkılır?


18

Ben makine öğrenimi ve keras hakkında acemi ve şimdi keras kullanarak çok sınıflı bir görüntü sınıflandırma sorunu üzerinde çalışıyor. Giriş etiketli resimdir. Bazı ön işlemlerden sonra, eğitim verileri Python listesinde şu şekilde temsil edilir:

[["dog", "path/to/dog/imageX.jpg"],["cat", "path/to/cat/imageX.jpg"], ["bird", "path/to/cat/imageX.jpg"]]

"köpek", "kedi" ve "kuş" sınıf etiketleridir. Bir-sıcak kodlama bu sorun için kullanılması gerektiğini düşünüyorum ama bu dize etiketleri ile başa çıkmak nasıl çok açık değilim. Bu şekilde sklearn'ın LabelEncoder () denedim:

encoder = LabelEncoder()
trafomed_label = encoder.fit_transform(["dog", "cat", "bird"])
print(trafomed_label)

Ve çıktı [2 1 0], bu [[1,0,0], [0,1,0], [0,0,1]] gibi bir şeyden beklentimden farklı. Bazı kodlamalarla yapılabilir, ancak bununla başa çıkmak için bazı "standart" veya "geleneksel" bir yol olup olmadığını bilmek ister misiniz?

Yanıtlar:


14

Sklearn LabelEncodermodülü tüm sınıfları bulur ve her birine 0'dan başlayarak sayısal bir kimlik atar. Bu, sınıf temsilcileriniz orijinal veri kümesinde ne olursa olsun, artık her birini temsil etmek için basit ve tutarlı bir yolunuz olduğu anlamına gelir. Doğru şekilde tanımladığınız gibi, oldukça yakın olmasına rağmen, bir sıcak kodlama yapmaz ve diğer kodlarda hızlı bir şekilde sıcak kodlamalar oluşturmak için bu kimlikleri kullanabilirsiniz.

Bir sıcak kodlama istiyorsanız, LabelBinarizerbunun yerine kullanabilirsiniz . Bu çok benzer şekilde çalışır:

 from sklearn.preprocessing import LabelBinarizer
 encoder = LabelBinarizer()
 transfomed_label = encoder.fit_transform(["dog", "cat", "bird"])
 print(transfomed_label)

Çıktı:

[[0 0 1]
 [0 1 0]
 [1 0 0]]

Ancak yeni bir renk tahmin etmeye çalıştığınızda hotencoding size nasıl yardımcı olabilir? Belki sizin durumunuzda modeli yeniden eğitmeniz gerekir. Herhangi bir çözümün var mı?
gtzinos

@gtzinos: Bu farklı bir soruya benziyor. Belki sitede isteyin. Bunu yaparsanız, NN'nin yepyeni bir öğeyi tahmin etmesinden (eğitim verilerinde görülmese de, yeni girdilerde mantıksal olarak olması gerekir) veya çevrimiçi eğitim verilerinde karşılaşıldıklarında anında yeni sınıflar eklemekten endişe duyup duymadığınızı netleştirin.
Neil Slater
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.