Aykırı değerleri ele alma

Python ile Keşifsel Veri Analizi

George Boorman

Curriculum Manager, DataCamp

Aykırı değer nedir?

  • Diğer noktalardan çok uzak bir gözlem
    • Medyan konut fiyatı: $400.000
    • Aykırı konut fiyatı: $5.000.000

 

  • Neden farklı olduğunu düşünün:
    • Konum, oda sayısı, toplam büyüklük vb.

Yüzme havuzlu büyük bir ev

1 Görsel: https://unsplash.com/@ralphkayden
Python ile Keşifsel Veri Analizi

Betimsel istatistikleri kullanma

print(salaries["Salary_USD"].describe())
count       518.000
mean     104905.826
std       62660.107
min        3819.000
25%       61191.000
50%       95483.000
75%      137496.000
max      429675.000
Name: Salary_USD, dtype: float64
Python ile Keşifsel Veri Analizi

Çeyrekler arası aralığı kullanma

Çeyrekler arası aralık (IQR)

  • IQR = %75 - %25 yüzdelik
Python ile Keşifsel Veri Analizi

Kutu grafikte IQR

sns.boxplot(data=salaries,
            y="Salary_USD")
plt.show()

Veri profesyonellerinin maaşlarına ait kutu grafiği; kutunun altı %25, ortası %50, üstü %75 yüzdeliği gösterir; kutu dışındaki elmaslar aykırılardır

Python ile Keşifsel Veri Analizi

Çeyrekler arası aralığı kullanma

Çeyrekler arası aralık (IQR)

  • IQR = %75 - %25 yüzdelik
  • Üst aykırılar > %75 yüzdelik + (1,5 × IQR)
  • Alt aykırılar < %25 yüzdelik - (1,5 × IQR)
Python ile Keşifsel Veri Analizi

Eşikleri belirleme

# 75th percentile
seventy_fifth = salaries["Salary_USD"].quantile(0.75)

# 25th percentile twenty_fifth = salaries["Salary_USD"].quantile(0.25)
# Interquartile range salaries_iqr = seventy_fifth - twenty_fifth
print(salaries_iqr)
76305.0
Python ile Keşifsel Veri Analizi

Aykırıları belirleme

# Upper threshold
upper = seventy_fifth + (1.5 * salaries_iqr)

# Lower threshold lower = twenty_fifth - (1.5 * salaries_iqr)
print(upper, lower)
251953.5 -53266.5
Python ile Keşifsel Veri Analizi

Verimizi alt kümeye ayırma

salaries[(salaries["Salary_USD"] < lower) | (salaries["Salary_USD"] > upper)] \

[["Experience", "Employee_Location", "Salary_USD"]]
        Experience    Employee_Location    Salary_USD
29      Mid           US                   429675.0
67      Mid           US                   257805.0
80      Senior        US                   263534.0
83      Mid           US                   429675.0
133     Mid           US                   403895.0
410     Executive     US                   309366.0
441     Senior        US                   362837.0
445     Senior        US                   386708.0
454     Senior        US                   254368.0
Python ile Keşifsel Veri Analizi

Neden aykırı arıyoruz?

  • Aykırılar uç değerlerdir

    • verimizi doğru yansıtmayabilir
  • Ortalama ve standart sapmayı değiştirebilir

  • İstatistiksel testler ve makine öğrenmesi modelleri genelde normal dağılım ister

Python ile Keşifsel Veri Analizi

Aykırılarla ne yapmalı?

Sorulacak sorular:

  • Bu aykırılar neden var?
    • Daha kıdemli roller / farklı ülkeler daha çok ödeyebilir
    • Veri setinde bırakmayı değerlendirin

 

  • Veri doğru mu?
    • Toplama hatası olabilir mi?
      • Öyleyse kaldırın
Python ile Keşifsel Veri Analizi

Aykırıları düşürme

no_outliers = salaries[(salaries["Salary_USD"] > lower) & (salaries["Salary_USD"] < upper)]
print(no_outliers["Salary_USD"].describe())
count       509.000000
mean     100674.567780
std       53643.050057
min        3819.000000
25%       60928.000000
50%       95483.000000
75%      134059.000000
max      248257.000000
Name: Salary_USD, dtype: float64
Python ile Keşifsel Veri Analizi

Maaş dağılımı

Aykırı değerler medyanla değiştirildikten sonra maaşların histogramı; yaklaşık 250000–450000 dolar arası uç değerler gösteriliyor

Aykırı değerler çıkarıldıktan sonra maaşların histogramı; neredeyse normal dağılıma benziyor

Python ile Keşifsel Veri Analizi

Haydi pratik yapalım!

Python ile Keşifsel Veri Analizi

Preparing Video For Download...