Eksik Veri İmpütasyonu: Hangi Yöntem Ne Zaman Kullanılır
# Eksik Veri İmpütasyonu: Hangi Yöntem Ne Zaman Kullanılır
Veri analizi yaparken eksik değerlerle karşılaşmak kaçınılmaz. Boş hücreler, NaN değerleri veya silinen kayıtlar modelinizi bozar, sonuçlarınızı güvenilmez hale getirir. İmpütasyon, bu boşlukları mantıklı değerlerle doldurma sanatıdır. Doğru yöntemi seçmek veri setinizin yapısına ve analiz hedefine bağlıdır.
Mean (Ortalama) İmpütasyon: Sayısal sütunun ortalamasıyla boşlukları doldur. Hızlı ama aşırı basit; veri dağılımını bozabilir. Kategorik verilerde işe yaramaz.
Median (Ortanca) İmpütasyon: Ortalamadan daha robust. Uç değerlerden etkilenmez. Çarpık dağılımlı veri setleri için tercih et.
Forward Fill / Backward Fill: Zaman serisi verilerinde ardışık satırlardan değer al. Stok seviyeleri, hava durumu gibi ardışık verilerde etkili.
KNN İmpütasyon: Benzer satırlardan değer ödünç al. Daha karmaşık ama daha doğru. Büyük veri setleri için hesaplama maliyeti yüksek.
Aşağıda bir satış veri setinde eksik değerleri farklı yöntemlerle tamamlayacağız:
1import pandas as pd2import numpy as np3from sklearn.impute import SimpleImputer, KNNImputer45# Örnek veri seti (eksik değerler içeriyor)6df = pd.DataFrame({7'satış': [100, 150, np.nan, 200, 180, np.nan],8'müşteri_id': [1, 2, 3, 4, 5, 6],9'bölge': ['A', 'B', 'A', 'C', 'B', 'C']10})1112print("Orijinal veri:")13print(df)14print("\nEksik değer sayısı:", df['satış'].isna().sum())1516# Mean imputation17imputer_mean = SimpleImputer(strategy='mean')18df_mean = df.copy()19df_mean['satış'] = imputer_mean.fit_transform(df[['satış']])2021print("\nMean İmpütasyon sonrası:")22print(df_mean)2324# Median imputation25imputer_median = SimpleImputer(strategy='median')26df_median = df.copy()27df_median['satış'] = imputer_median.fit_transform(df[['satış']])2829print("\nMedian İmpütasyon sonrası:")30print(df_median)3132# KNN imputation33imputer_knn = KNNImputer(n_neighbors=2)34df_knn = df.copy()35df_knn['satış'] = imputer_knn.fit_transform(df[['satış', 'müşteri_id']])[:, 0]3637print("\nKNN İmpütasyon sonrası:")38print(df_knn)Çıktı: Mean imputation 157.5 (ortalama), Median imputation 165 (ortanca), KNN ise komşu satırlardan daha akıllıca değer seçer.
- Hızlı prototip: Mean/Median kullan.
- Zaman serisi: Forward/Backward Fill.
- Doğruluk önemli: KNN veya advanced yöntemler (MICE, interpolation).
- Kategorik veri: Mode (en sık değer) veya KNN.
Eksik veri oranı %30'dan fazlaysa, silmeyi değerlendir. Veri kaybından iyidir hatalı tahmin.
0 yorum