Eksik veri
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 20/112
- 5 dk
Eksik değerler df.isna() ile bulunur, df.fillna() ya da SimpleImputer ile doldurulur.
Eksik değerleri bulmak
Eksik değer pandas'ta NaN olarak görünür. Önce nerede ve ne kadar olduğuna bakılır:
print(df.isna().sum()) # sütun başına eksik sayısı
print(df.isna().mean() * 100) # yüzde olarakscikit-learn modellerinin çoğu NaN içeren veriyle eğitilemez ve ValueError verir; bu yüzden eksikler mutlaka ele alınmalıdır.
Atmak mı, doldurmak mı?
Az sayıda satırda eksik varsa atılabilir; çoksa veri kaybı büyür ve doldurmak daha iyidir:
df.dropna() # eksikli satırları at
df["yas"].fillna(df["yas"].median()) # medyanla doldur
from sklearn.impute import SimpleImputer
imp = SimpleImputer(strategy="mean")
X = imp.fit_transform(X)SimpleImputer eğitim verisinden öğrendiği değeri test verisine de aynen uygular; böylece test bilgisi eğitime sızmaz.
Uygulama Eksikleri doldur
SimpleImputer(strategy="mean") ile X'teki np.nan değerlerini doldur ve sonucu yazdır.
Başlangıç kodu
import numpy as np
from sklearn.impute import SimpleImputer
X = np.array([[1, 10], [np.nan, 20], [3, np.nan]])
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.impute import SimpleImputer
X = np.array([[1, 10], [np.nan, 20], [3, np.nan]])
imp = SimpleImputer(strategy="mean")
print(imp.fit_transform(X))Beklenen çıktı
[[ 1. 10.] [ 2. 20.] [ 3. 15.]]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Eksik değer içeren veriyle <code>LinearRegression().fit</code> çağrılırsa ne olur?
- Eksikleri sıfır sayar
- Eksik satırları atlar
- Uyarı verip devam eder
- ValueError verir Doğru cevap
Açıklama: Eksikleri önce atmak ya da doldurmak gerekir.
2 Eksikleri sütun ortalamasıyla dolduran nesneyi oluştur.
imp = SimpleImputer(strategy=____)
imp = SimpleImputer(strategy="mean")
Açıklama: strategy "mean", "median", "most_frequent" ya da "constant" olabilir.
3 Araçları eşleştir.
| Kavram | Anlamı |
|---|---|
isna() |
Eksikleri işaretler |
dropna() |
Eksikli satırları atar |
fillna() |
Eksikleri doldurur |
SimpleImputer |
Eğitilebilir doldurucu |