Makine öğrenme algoritmaları doğrudan kategorik veriler üzerinde çalışmamaktadır bu yüzden verilerimizin sayısal verilere dönüştürülmesi gerekmektedir. Makine öğrenmesi algoritmalarında kullanılan veri setlerindeki kategorik sınıflara sahip özniteliklerin, sayısal veri tipi ile ifade edilmesi için label encoding ve one-hot encoding işlemleri gerçekleştirilebilir.
Karar ağaçları ve Rastgele orman gibi bazı algoritmalarda, disk alanından tasarruf etmek amacıyla label encoding ile sayısal forma dönüşüm yapılabilmektedir.
Kategorik değişkenler birçok Makine Öğrenimi modeli için bir sorundur. Ancak onları anlayabilmeleri için kodlayabilirsiniz.
Label Encoding
Bu teknikte, her bir veriye alfabetik sıralamaya göre benzersiz bir tam sayı atanır.
Python ile Label Encoding
import pandas as pd
import os
from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
os.chdir('C:/Users/MAHMUT/Desktop/calismadizini')
dataset = pd.read_excel("araclar.xlsx")
color = dataset.iloc[:,[1]].values
color_LE=le.fit_transform(color)
print(color_LE)
One-Hot Encoding
Bu teknikte var olan veriye 1, diğerlerine 0 değeri atanır.
Python ile One-Hot Encoding
import pandas as pd
import os
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
os.chdir('C:/Users/MAHMUT/Desktop/calismadizini')
dataset = pd.read_excel("araclar.xlsx")
color = dataset.iloc[:,[1]].values
color_OHE =ohe.fit_transform(color).toarray()
print(color_OHE)
Label Encoding ve One Hot Encoding ne zaman kullanılmalı?
Kategorik özellik sıralı ise(Örn: İlkokul, Lise, Üniversite gibi) Label Encoding uygularız.
Kategorik özellik sıralı değilse (Örn: Ülkeler gibi) One-Hot Encoding uygularız.
Çoklu Label Encoding ve One Hot Encoding
Yukarıda sadece 1 tane kolon için Label Encoding veya One-Hot Encoding işlemi yaptık ancak verimizde genelde birden çok kategorik değişkenimiz olacak, tek seferde hepsine Label-Encoding ve One-Hot Encoding işlemi uygulamak için aşağıdaki kodu kullanabilirsiniz:
'VAR-YOK', 'ALFABE', 'EVET-HAYIR' kolonlarına Label-Encoding, 'SEVİYE', 'ARALIK' kolonlarına ise One-Hot Encoding uygulayacağız.
import pandas as pd
import os
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
os.chdir('C:/Users/MAHMUT/Desktop/calismadizini')
df = pd.read_excel("excel-veri.xlsx")
#########1-LABEL ENCODING##################
# label encoding yapılacak kolonlar
columns_to_label_encode = ['VAR-YOK', 'ALFABE', 'EVET-HAYIR']
# LabelEncoder sınıfını tanımlayın
le = LabelEncoder()
# belirtilen kolonlara label encoding işlemi uygulayın
df[columns_to_label_encode] = df[columns_to_label_encode].apply(lambda x: le.fit_transform(x))
#########2-ONE HOT ENCODING##################
# one hot encoding yapılacak kolonlar
columns_to_one_hot_encode = ['SEVİYE', 'ARALIK']
# get_dummies() fonksiyonu ile One-Hot Encoding uygulayın
df_encoded = pd.get_dummies(df, columns=columns_to_one_hot_encode)
print(df_encoded)
#DataFrame'i bir excel dosyasına yazdırabiliriz.
df_encoded.to_excel(r'C:/Users/MAHMUT/Desktop/calismadizini/df-excel.xlsx', index=False)
Yaygın Kodlama Teknikleri
En yaygın kodlama tekniklerinden bazıları şunlardır:
- Etiket Kodlama
- Bir Sıcak Kodlama
- Sıralı Kodlama
- Frekans Kodlaması
- Hedef Kodlama
Kaynaklar
- https://twitter.com/daansan_ml/status/1702230737494364323?t=ciMUXEzDruCDH5nBf-J5Mw&s=08