Sütunların birbirleri ile korelasyonunu hesaplamak için "Pandas" kütüphanesi kullanılır. Korelasyon işleminde boş değerler (NaN) hariç tutularak hesaplama işlemi yapılır. Ayrıca korelasyon işlemi yapılırken sayısal veriler haricindeki veri türleri (Örn: object) hesaba katılmayacaktır.
İki sütunun birbiri ile korelasyonunun mutlak değerleri;
- 0-0.20 arasındaki değerler birbirleri ile ilişkisinin olmadığı ya da çok zayıf ilişki olduğunu gösterir.
- 0.20-0.39 arasındaki değerler zayıf ilişki
- 0.40-0.59 arasında ise orta düzeyde ilişki
- 0.60-0.79 arasında ise yüksek düzeyde ilişki
- 0.80-1.0 ise çok yüksek ilişki olduğunu gösterir.
0-0.20 değerlerin altında olan korelasyon ilişkileri çok düşük değerlerde olduğu için ve 0.90 üzerinde olan korelasyon ilişkileri de birbirini tekrarladığı için bu sütunlar işleme alınmayabilir. Örneğin; bir sütunda evin yapılış tarihi 2013 olarak belirtiliyorken, diğer sütunda da evin 9 yaşında olduğu belirtiliyorsa bu sütunlar birbirlerinin tekrarıdır ve korelasyon değerleri de çok yüksek çıkacaktır.
Korelasyon katsayısı matematiksel olarak [-1,1] arasında değerler alır. Burada bulunan negatif değerlerin nedeni sütunların birbirleri ile ters ilişkisinin olduğunu gösterir. Örnek olarak, bir araba fiyatı ile kilometre değerinin ters oranda olması gibi, arabanın kilometre değeri düşük olursa fiyatının da artması beklenir.
Kullanımı: DataFrame.corr()
Örnek-1: Araba fiyatlarını gösteren "cars.xls" veri seti sütunlarının birbirleri ile olan korelasyonlarını inceleyelim.
#Kütüphaneler import edildi
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#Veri seti okunur
df=pd.read_excel("cars.xls")
df.head()
Çıktı:
#Tüm veri setinin korelasyonu
df.corr()
Çıktı:
Çıkan tabloyu yorumlamak gerekirse; dikeyde bulunan değişkenlerle yatayda bulunan değişkenlerin kesiştikleri noktalar korelasyon değerini verecektir. Örnek olarak;
- Price ile Mileage'nin korelasyon değeri -0.143051
- Doors ile Cruise'nin korelasyon değeri -0.047674
- Tüm değişkenlerin kendisi ile korealasyon değeri 1 dir.
Sadece Price sütununun diğer sütunlarla korelasyon değerini listeleyelim:
df.corr()["Price"]
Çıktı:
Price 1.000000 Mileage -0.143051 Cylinder 0.569086 Liter 0.558146 Doors -0.138750 Cruise 0.430851 Sound -0.124348 Leather 0.157197 Name: Price, dtype: float64
Price sütununu etkileyen değişkenleri büyükten küçüğe sıralamak için mutlak değer sonuçlarına bakmak gerekecektir.
abs(df.corr()["Price"]).sort_values(ascending=False)
Çıktı:
Price 1.000000 Cylinder 0.569086 Liter 0.558146 Cruise 0.430851 Leather 0.157197 Mileage 0.143051 Doors 0.138750 Sound 0.124348 Name: Price, dtype: float64
Price değişkenini en çok etkileyen değişkenin Cylinder, en az etkileyen ise Sound olduğu görülmüş oldu.
Korelasyon değerlerini grafiksel olarak da görebiliriz: Koyu renkten açık renge doğru korelasyon değerlerinin artacağı gözlemlenecektir.
sns.heatmap(df.corr(),annot=True,linewidths=2)
Çıktı: