Basit Label Encoding ve One Hot Encoding get_dummies () kullanımı

Özge Karalı
3 min readJun 22, 2021

--

Label Encoding ve One Hot Encoding kavramları veri setimizde kategorik değerlerimizi sayısal değerlere dönüştürmek amacıyla kullanırız.

Bir örnek üzerinden basit şekilde hem kavramları biraz açarak hem de kodlayarak başlayalım.

Elimizde öğrencilerin başarı durumunu etkileyebilen özniteliklerimizin olduğu makine öğrenmesi çalışacağımız veri setimiz vardır.

Veri setimizi incelediğimizde ( df.info()) özniteliklerimiz arasında kategorik olan özniteliklerimiz gözlemleriz, makine öğrenmesi algoritmalarında sayısal değerleri kullanmayı tercih ederiz. Bahsedilen kavramlar kategorik özelliklerimizi sayısal değerlere çevirme işlemidir.

Label Encoding

Özniteliklerimizi incelediğimizde “school_type” , “teaching_method”, “gender” , “lunch” , özniteliklerimiz iki benzersiz değerden “school_setting” özniteliğimiz üç benzersiz değerden oluşmaktadır.

İki benzersiz değere sahip öznitelikler için genellikle Label Encoding kullanır. FALSE/TRUE temsilini gösterir. Örneğin “gender” özniteliğim için “Female” benzersiz değerim için False -0 değerini “Male” benzersiz değerim için True -1 değerini atamıştır.

Şimdi df.head() ile veri setimize bakalım. “school_type”, “teaching_method” , “gender” , “lunch” özniteliklerimiz sayısallaştırılmıştır.

Label Encoding

5 benzersiz değerden oluşan bir özniteliğimiz olduğunu varsayarsak ve bu benzersiz değerler meslek gruplarından bahsetsin “işçi”, “mühendis”,”öğretmen”, “doktor”,”güvenlik_personeli” nden oluşmuş olsun. Label Encoding ile sayısallaştırma yaptığımızda örneğin “güvenlik_personeli” ne atadığı 4 değerini “mühendis” için atanmış 1 değerini “güvenlik_personeli” özniteğini daha önemli olduğunu varsayarak yanıltma durumu ortaya çıkabilir.Bundan dolayı genellikle bir özniteliğimiz iki benzersiz değere sahip olanlar için Label Encoding yapmak, daha fazla benzersiz değere sahip özniteliklerimiz için ONe Hot Encoding yapmak daha sağlıklı olabilir.

One Hot Encoding — Pandalar get_dummies () işlevi

“school_setting” sutunumuz üç benzersiz değerden oluşmaktadır.Burada One Hot Encoding kullanmak gerekliliği doğmuştur.

One Hot Encoding Pandalar get_dummies() ile gerçekleştireceğim.Fakat One Hot Encoding nedir diye biraz mantığınız konuşalım.

Bu yaklaşımda kategorik türde özniteliğe ait tüm değerler yeni birer öznitelik haline getirilir.Her örnek asıl olarak hangi yeni özniteliğe sahipse (kategorik değere) onun değeri “1”, diğer yeni özniteliklerin değerleri ise “0” olur. Aslında bir çeşit “ikili kodlama” (binary coding) olarak da düşünülebilir.

Veri setimizde “school_setting” özniteliğimiz için uygulayalım. pd.get_dummies komutu ile her eşsiz değerimiz bir öznitelik olur.

Pd.concat komutumuz ile de ana veri çerçevemize ekleme işlemimizi yaparız.

One Hot Encoding

Son olarak df.head() komutu ile veri setimize baktığımızda; tüm kategorik değerlerimiz sayısal değerlere çevrilmiştir.

Geri dönüşlerini çok önemli eksik veya farklı gördüğünüz durumlar için bekliyorum.

--

--