Python’da Kategorik Verileri Kodlama Yöntemleri

Kategorik Veri Nedir?

Kategorik veri, belirli bir grup veya kategoriye ait olan verileri ifade eder. Örneğin, bir ürünün rengi, bir kişinin cinsiyeti veya günün hangi günü olduğu gibi değerler, kategorik verilerin örnekleridir. Kategorik veriler genellikle sayısal olmayan ve sıklıkla sınıflandırma amacıyla kullanılan verilerdir. Makine öğrenimi ve veri analizi süreçlerinde, modelin doğru ve etkili bir şekilde çalışabilmesi için kategorik verilerin sayısal bir forma dönüştürülmesi gerekir.

Kategorik veriyi sayısal verilere dönüştürme işlemine kodlama denir. Bu işlem, modelin verileri daha iyi anlaması ve öğrenme sürecini hızlandırması için gereklidir. Kategori sayısının çok olduğu durumlarda, kategorik veri kodlama daha da önemli hale gelir. Python, bu tür dönüşümler için bir dizi güçlü kütüphane ve yöntem sunar.

Kategorik Veri Kodlama Yöntemleri

Python içerisinde sıklıkla kullanılan bazı kategorik veri kodlama yöntemleri şunlardır: Etiket Kodlama (Label Encoding), Tek-Düm Kodlama (One-Hot Encoding) ve Hedef Kodlama (Target Encoding). Her bir yöntemin kendine özgü avantajları ve kullanım senaryoları vardır, bu nedenle hangi durumda hangi yöntemin tercih edileceğine karar verirken dikkatli olmak önemlidir.

Label Encoding

Label Encoding, kategorik verilerin her bir kategorisini benzersiz bir tam sayıya dönüştürme işlemidir. Bu yöntem, basit ve hızlıdır. Örneğin, ‘Kırmızı’, ‘Mavi’ ve ‘Yeşil’ renklerini sırasıyla 0, 1 ve 2 olarak kodlayabiliriz. Ancak, bu yöntemin dikkat edilmesi gereken bir yanı vardır: Sayısal değerlerin, sıralı bir ilişki göstermesi durumunda, modele yanlış bilgiler verebilir.

Bu nedenle, label encoding genellikle sıralı olmayan kategorik veriler için kullanılır. Python’da label encoding yapmak için Scikit-learn kütüphanesindeki LabelEncoder sınıfını kullanabiliriz. Örnek bir kullanım aşağıda verilmiştir:

from sklearn.preprocessing import LabelEncoder
import pandas as pd

veri = pd.DataFrame({'Renk': ['Kırmızı', 'Mavi', 'Yeşil', 'Mavi']})
le = LabelEncoder()
veri['Renk_Kod'] = le.fit_transform(veri['Renk'])
print(veri)

One-Hot Encoding

One-Hot Encoding, her bir kategoriyi ayrı bir sütun olarak temsil eden bir kodlama yöntemidir. Kategorik bir sütundaki her bir benzersiz kategori, bir sütun olarak kodlanır ve ilgili kategori mevcutsa 1, değilse 0 ile gösterilir. Bu yöntem, modelin yanlış varsayımlarda bulunmasını önler, çünkü kategorik değişkenler arasındaki ilişki sıfır veya bir olarak ayrılır.

One-Hot Encoding genellikle nominal veriler için tercih edilir. Örneğin, ‘Kırmızı’, ‘Mavi’ ve ‘Yeşil’ renklerini temsil eden bir veri kümesinde, her renk için ayrı sütunlar oluşturabilirsiniz. Python’da bu işlemi gerçekleştirmek için pandas kütüphanesini kullanabilirsiniz:

import pandas as pd

veri = pd.DataFrame({'Renk': ['Kırmızı', 'Mavi', 'Yeşil', 'Mavi']})
veri = pd.get_dummies(veri, columns=['Renk'], prefix='Renk')
print(veri)

Target Encoding

Target Encoding, her bir kategori için hedef değişkenin ortalamasını alarak kategorik veriyi sayısal hale getirir. Bu yöntem, özellikle sayısal hedef değişkenler ile çalışırken oldukça faydalıdır. Örneğin, her bir renk için satın alma sıklığını veya satış değerini kodlayarak bu bilgiden yararlanabilirsiniz.

Ancak, target encoding dikkatli kullanılmalıdır çünkü aşırı öğrenmeye (overfitting) yol açabilir. Bu yöntemi kullanırken, geçerli verilerle öğrenme setinin ayrılması veya k-fold cross-validation gibi yöntemlerle uygulanması önerilir. Python’da basit bir target encoding uygulaması için aşağıdaki adımları izleyebilirsiniz:

import pandas as pd

veri = pd.DataFrame({'Renk': ['Kırmızı', 'Mavi', 'Yeşil', 'Mavi'], 'Satış': [100, 150, 200, 180]})
ortalama = veri.groupby('Renk')['Satış'].mean().reset_index().rename(columns={'Satış': 'Renk_Ortalama'})
veri = veri.merge(ortalama, on='Renk')
print(veri)

Kategori Sayısının Etkisi

Kategorik verilerin kodlanması sırasında dikkate alınması gereken önemli bir konu, kategori sayısının model üzerindeki etkisidir. Çok sayıda farklı kategoriye sahip olan veriler, modelin karmaşık hale gelmesine ve hesaplama sürelerinin artmasına neden olabilir. Bu tür durumlarda, bazı kategorilerin birleştirilmesi veya belirli bir eşiğin altındaki sıklıklara sahip kategorilerin ‘diğer’ kategorisi altında birleştirilmesi gibi yöntemler kullanılabilir.

Ayrıca, kategorilerin sayısı arttıkça, one-hot encoding ile oluşturulan sütun sayısı da artar. Bu durum, hafıza ve işlem gücü üzerinde olumsuz etkilere yol açabilir. Bu nedenle analiz yaparken, kategori sayısını makul seviyelerde tutmaya özen göstermek önemlidir.

Sonuç

Kategorik veri kodlama, makine öğrenimi ve veri analizi alanında kritik öneme sahiptir. Veri analizi ve modele uygun bir hale getirme sürecinde doğru kodlama yöntemlerinin seçilmesi, modelin genel başarısını büyük ölçüde etkiler. Python, bu tür dönüşümleri kolaylaştıran birçok güçlü kütüphane ve araç sunmaktadır.

Label Encoding, One-Hot Encoding ve Target Encoding gibi çeşitli yöntemler arasından uygun olanı seçerken, verinin yapısını, modelleme hedefini ve potansiyel aşırı öğrenme risklerini dikkate almak önemlidir. Doğru kodlama yöntemleri belirlenerek yapılacak veri analizleri ve modellemeler, daha anlamlı ve güvenilir sonuçlar elde edilmesini sağlayacaktır.

Deneyimlerinizi geliştirmek ve Python ile kategorik veri kodlama konusunda pratik yapmak için basit veri kümesi örnekleri ile uygulamalar yapmanızı öneririm. Teorik bilgiyi uygulamaya dökerek öğrenilenlerin kalıcılığını artırmak adına projeler gerçekleştirmek, süreçlerinize değer katacaktır.

Scroll to Top