Veri Ön İşleme: Temizlik, Normalizasyon ve Dönüştürme
Veri analizi ve makine öğrenmesi projeleri temiz veriye bağlı. Çoğu zaman ham veri eksik, tutarsız veya ölçek problemli gelir. Ön işleme bu sorunları çözer ve modeliniz için veriyi hazırlar.
İlk olarak eksik değerleri, yinelenenleri ve hataları bulup düzeltirsin. Eksik veriler (NULL, NaN) analizi bozar. Bunları ya silersin, ya ortalama/medyan ile doldurursun.
1import pandas as pd2import numpy as np34# Örnek veri5veri = pd.DataFrame({6'Ad': ['Ali', 'Ayşe', 'Ali', 'Mehmet', None],7'Yaş': [25, 30, 25, np.nan, 35],8'Şehir': ['İstanbul', 'Ankara', 'İstanbul', 'İzmir', 'Bursa']9})1011print("Orijinal veri:")12print(veri)1314# Yinelenenleri çıkar15veri_temiz = veri.drop_duplicates()1617# Eksik yaş değerini medyanla doldur18veri_temiz['Yaş'].fillna(veri_temiz['Yaş'].median(), inplace=True)1920# Ad sütunundaki boş satırı sil21veri_temiz = veri_temiz.dropna(subset=['Ad'])2223print("\nTemizlenmiş veri:")24print(veri_temiz)Çıktı:
1Temizlenmiş veri:2Ad Yaş Şehir30 Ali 25.0 İstanbul41 Ayşe 30.0 Ankara53 Mehmet 30.0 İzmir64 None 35.0 BursaFarklı ölçeklerdeki sayısal veriler karşılaştırılamaz. Yaş (0-100) ile maaş (0-100000) aynı ağırlığa sahip olamaz. Normalizasyon verileri 0-1 aralığına çeker.
Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1from sklearn.preprocessing import MinMaxScaler23# Sayısal sütunları seç4sayisal = veri_temiz[['Yaş']].copy()56# MinMaxScaler uygula (0-1 aralığı)7scaler = MinMaxScaler()8veri_temiz['Yaş_Normalized'] = scaler.fit_transform(sayisal)910print("Normalizasyon sonrası:")11print(veri_temiz[['Yaş', 'Yaş_Normalized']])Çıktı:
1Yaş Yaş_Normalized20 25.0 0.031 30.0 0.33333343 30.0 0.33333354 35.0 1.0Metinsel veriler (kategorik) sayıya çevrilir. Şehir adları sayıya kodlanır ki model onları anlasın.
1from sklearn.preprocessing import LabelEncoder23# Kategorik sütunu sayıya dönüştür4le = LabelEncoder()5veri_temiz['Şehir_Kod'] = le.fit_transform(veri_temiz['Şehir'])67print("Dönüştürülmüş veri:")8print(veri_temiz[['Şehir', 'Şehir_Kod']])9print("\nKodlama:")10for i, şehir in enumerate(le.classes_):11print(f"{şehir}: {i}")Çıktı:
1Dönüştürülmüş veri:2Şehir Şehir_Kod30 İstanbul 241 Ankara 053 İzmir 164 Bursa 078Kodlama:9Ankara: 010Bursa: 111İstanbul: 212İzmir: 3Bu üç adım tekrar tekrar yapılan işlemdir. Verinin kalitesi arttıkça modeliniz daha doğru sonuç verir.
0 yorum