Kategorik değerleri imput etme

Python'da Eksik Verilerle Çalışma

Suraj Donthi

Deep Learning & Computer Vision Consultant

Kategorik değerlerde zorluklar

  • Çoğu kategorik değer string’dir
  • String’ler üzerinde işlemler yapılamaz
  • String’leri sayısala dönüştürmek/kodlamak ve imput etmek gerekir
Python'da Eksik Verilerle Çalışma

Dönüştürme teknikleri

One-hot encoder
Renk Color_Red Color_Green Color_Blue
Kırmızı 1 0 0
Yeşil 0 1 0
Mavi 0 0 1
Kırmızı 1 0 0
Mavi 0 0 1
Mavi 0 0 1
Sıralı kodlayıcı
Renk Değer
Kırmızı 0
Yeşil 1
Mavi 2
Kırmızı 0
Mavi 2
Mavi 2
Python'da Eksik Verilerle Çalışma

İmputasyon teknikleri

  • En sık görülen kategori ile doldurun
  • KNN gibi istatistiksel modellerle imput edin
Python'da Eksik Verilerle Çalışma

Kullanıcı profili verisi

users = pd.read_csv('userprofile.csv')
users.head()
    smoker    drink_level    dress_preference ambience    hijos        activity     budget
0    False    abstemious        informal      family    independent    student      medium
1    False    abstemious        informal      family    independent    student      low
2    False    social drinker    formal        family    independent    student      low
3    False    abstemious        informal      family    independent    professional medium
4    False    abstemious     no preference    family    independent    student      medium
Python'da Eksik Verilerle Çalışma

Sıralı Kodlama

from sklearn.preprocessing import OrdinalEncoder

# Sıralı Kodlayıcı oluşturun ambience_ord_enc = OrdinalEncoder() # ambience sütunundaki boş olmayan değerleri seçin ambience = users['ambience'] ambience_not_null = ambience[ambience.notnull()] reshaped_vals = ambience_not_null.values.reshape(-1, 1)
# ambience'in boş olmayan değerlerini kodlayın encoded_vals = ambience_ord_enc.fit_transform(reshaped_vals)
# ambience sütununu sıralı değerlerle değiştirin users.loc[ambience.notnull(), 'ambience'] = np.squeeze(encoded_vals)
Python'da Eksik Verilerle Çalışma

Sıralı Kodlama

# Sıralı kodlayıcılar için sözlük oluşturun
ordinal_enc_dict = {}

# Kodlanacak sütunlarda döngü
for col_name in users:
    # Sütun için sıralı kodlayıcı oluşturun
    ordinal_enc_dict[col_name] = OrdinalEncoder()
    col = users[col_name]

    # Sütundaki boş olmayan değerleri seçin
    col_not_null = col[col.notnull()]
    reshaped_vals = col_not_null.values.reshape(-1, 1)

    # Sütunun boş olmayan değerlerini kodlayın
    encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)

    # Sütundaki değerleri sıralı değerlerle değiştirin
    users.loc[col.notnull(), col_name] = np.squeeze(encoded_vals)
Python'da Eksik Verilerle Çalışma

KNN ile imput etme

users_KNN_imputed = users.copy(deep=True)

# KNN imputeri oluşturun KNN_imputer = KNN()
users_KNN_imputed.iloc[:, :] = np.round(KNN_imputer.fit_transform(users))
for col_name in users_KNN_imputed: # DataFrame'e kaydederken hatayı önlemek için # değerleri 2 boyuta dönüştürün reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1) users_KNN_imputed[col_name] = \ ordinal_enc_dict[col_name].inverse_transform(reshaped)
Python'da Eksik Verilerle Çalışma

Özet

Kategorik değerleri imput etme adımları

  • Eksik olmayan kategorik sütunları sıralı değerlere dönüştürün
  • Sıralı DataFrame’de eksik değerleri imput edin
  • Sıralı değerleri yeniden kategorik değerlere çevirin
Python'da Eksik Verilerle Çalışma

Haydi pratik yapalım!

Python'da Eksik Verilerle Çalışma

Preparing Video For Download...