Korelasyon Matrisleri için Isı Haritaları
DataFrame.corr() ile korelasyon matrisi hesaplayın ve bunu sns.heatmap ile renklendirilmiş bir ısı haritası olarak görselleştirin.
Korelasyon Matrisleri için Isı Haritaları, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Korelasyon Matrisi Nedir?
Korelasyon matrisi, (i, j) hücresinde i sütunu ile j sütunu arasındaki Pearson korelasyon katsayısını içeren kare bir tablodur. Değerler -1 (mükemmel negatif doğrusal korelasyon) ile +1 (mükemmel pozitif) arasında değişir; 0, doğrusal ilişkinin olmadığını gösterir. Köşegen her zaman 1'dir (bir değişken kendisiyle mükemmel korelasyon gösterir). Korelasyon matrisleri, bir model oluşturmadan önce hangi değişkenlerin birlikte hareket ettiğini anlamanın ilk adımıdır.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Compute correlation matrix for numeric columns
tips = sns.load_dataset('tips')
corr = tips[['total_bill', 'tip', 'size']].corr()
print(corr.round(2))Korelasyon Matrisini Hesaplama
Tüm sayısal sütunlar için ikili Pearson korelasyonlarını hesaplamak üzere DataFrame.corr() çağrısını yapın. method parametresi hangi korelasyonun hesaplanacağını belirler: 'pearson' (varsayılan, doğrusal), 'spearman' (sıra tabanlı; aykırı değerlere ve doğrusal olmayan monoton ilişkilere dayanıklı) veya 'kendall'. Çarpık finansal ya da sayım verilerinde Spearman çoğu zaman Pearson'dan daha bilgilendiricidir.
import pandas as pd
import seaborn as sns
tips = sns.load_dataset('tips')
numeric = tips.select_dtypes(include='number')
# Pearson vs Spearman
pearson = numeric.corr(method='pearson')
spearman = numeric.corr(method='spearman')
print('Pearson:')
print(pearson.round(2))
print('\nSpearman:')
print(spearman.round(2))sns.heatmap ile Temel Isı Haritası
sns.heatmap(data), 2B bir dizi veya DataFrame alır ve bunu renkli bir ızgara olarak oluşturur; her hücrenin rengi sayısal değerini kodlar. Bir korelasyon matrisine uygulandığında sıcak renkler (kırmızı) genellikle pozitif korelasyonu, soğuk renkler (mavi) ise negatif korelasyonu temsil eder. annot=True parametresi sayısal değeri her hücrenin içine yazdırır; bu, korelasyon ısı haritasını doğru okumak için gereklidir.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
corr = tips.select_dtypes('number').corr()
sns.heatmap(corr, annot=True, fmt='.2f')
plt.title('Correlation Heatmap — Tips Dataset')
plt.tight_layout()
plt.show()Doğru Renk Haritasını Seçme
Korelasyon matrisleri için her zaman sıfır merkezli iki yönlü bir renk haritası kullanın: cmap='coolwarm', 'RdBu_r' veya 'vlag'. Bu haritalar pozitif değerler için bir renk, negatif değerler için başka bir renk ve sıfırda nötr bir orta nokta kullanır. Korelasyon verileri için sıralı renk haritalarından (örneğin 'Blues') kaçının; çünkü bunlar pozitif ve negatif korelasyonları görsel olarak ayırt etmeyi imkânsız hâle getirir. Renk ölçeğini korelasyon aralığının tamamına sabitlemek için vmin=-1, vmax=1 ayarlayın.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
corr = tips.select_dtypes('number').corr()
sns.heatmap(
corr,
annot=True,
fmt='.2f',
cmap='coolwarm',
vmin=-1,
vmax=1,
center=0
)
plt.title('Correlation Heatmap with Diverging Palette')
plt.tight_layout()
plt.show()Üçgenin Üst Kısmını Maskeleme
Bir korelasyon matrisi simetrik olduğundan (corr[i,j] == corr[j,i]), her iki yarıyı da göstermek gereksizdir. Üçgenin üst kısmı için bir maske oluşturmak üzere np.triu kullanın ve bunu sns.heatmap içinde mask= parametresine aktarın. Bu, hücre sayısını yarıya indirerek grafiğin daha az karmaşık ve daha kolay okunur olmasını sağlar. Bilgi taşımadıkları için köşegen değerleri (tamamı 1.0) de maskelenebilir.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
tips = sns.load_dataset('tips')
corr = tips.select_dtypes('number').corr()
# Mask the upper triangle (including diagonal)
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(
corr,
mask=mask,
annot=True,
fmt='.2f',
cmap='coolwarm',
vmin=-1,
vmax=1
)
plt.title('Lower-Triangle Correlation Heatmap')
plt.tight_layout()
plt.show()Açıklama ve Hücre Boyutunu Özelleştirme
Açıklama biçimini fmt= ile (örneğin iki ondalık basamak için '.2f'), yazı tipi boyutunu ise annot_kws={'size': 10} ile denetleyin. linewidths parametresi hücrelerin arasına ince çizgiler ekleyerek büyük matrislerde ızgaranın daha kolay okunmasını sağlar. Şeklin boyutlarından bağımsız olarak hücreleri kare biçiminde zorlamak için square=True kullanın; bu, ısı haritalarına temiz ve dengeli bir görünüm kazandırır.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# Load a wider dataset for a more interesting heatmap
penguins = sns.load_dataset('penguins').select_dtypes('number')
corr = penguins.corr()
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(
corr,
mask=mask,
annot=True,
fmt='.2f',
cmap='vlag',
vmin=-1,
vmax=1,
linewidths=0.5,
square=True,
annot_kws={'size': 10}
)
plt.title('Penguins Correlation Matrix')
plt.tight_layout()
plt.show()clustermap ile Kümeleme
sns.clustermap(), benzer korelasyon örüntülerine sahip değişkenleri birlikte gruplamak için hiyerarşik kümeleme kullanarak satırları ve sütunları yeniden sıralar. Bu, büyük matrislerde korelasyon gösteren özellik bloklarını belirlemeyi çok daha kolaylaştırır. Üst ve sol eksenlerdeki dendrogram, kümeleme ağacını gösterir. Korelasyon tabanlı kümeleme için method='ward' ve metric='euclidean' makul varsayılanlardır.
import seaborn as sns
import matplotlib.pyplot as plt
penguins = sns.load_dataset('penguins').select_dtypes('number').dropna()
corr = penguins.corr()
sns.clustermap(
corr,
cmap='coolwarm',
vmin=-1,
vmax=1,
annot=True,
fmt='.2f',
figsize=(6, 6)
)
plt.suptitle('Clustered Correlation Matrix', y=1.02)
plt.show()Özet Tablo Verileri için Isı Haritası
Isı haritaları yalnızca korelasyon matrisleriyle sınırlı değildir; her türlü iki boyutlu sayısal tablo, renklerle kodlamadan yararlanır. Yaygın bir yaklaşım, bir özet tablo hesaplamak (örneğin güne ve saate göre ortalama bahşiş) ve ardından bunu ısı haritası olarak görselleştirmektir. Bu işlem, yoğun bir sayı tablosunu, en yüksek ve en düşük değerlerin görsel olarak hemen öne çıktığı, bir bakışta taranabilen renkli bir ızgaraya dönüştürür.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
tips = sns.load_dataset('tips')
# Pivot: average bill by day and time
pivot = tips.pivot_table(
values='total_bill',
index='day',
columns='time',
aggfunc='mean'
)
sns.heatmap(pivot, annot=True, fmt='.1f', cmap='YlOrRd')
plt.title('Average Bill by Day and Time')
plt.tight_layout()
plt.show()Korelasyon Değerlerini Yorumlama
Korelasyonları yorumlarken şu yaklaşık ölçütleri kullanın: |r| < 0.2 = ihmal edilebilir, 0.2-0.4 = zayıf, 0.4-0.6 = orta, 0.6-0.8 = güçlü, > 0.8 = çok güçlü. Ancak korelasyon size nedensellik hakkında hiçbir şey söylemez ve sahte olabilir (üçüncü bir karıştırıcı değişken nedeniyle tesadüfen ilişkili görünebilir). İlişkinin gerçekten doğrusal olduğunu ve aykırı değerler tarafından belirlenmediğini doğrulamak için sayısal korelasyon analizini her zaman saçılım grafikleriyle birlikte kullanın.
import pandas as pd
import seaborn as sns
# Find the most correlated pairs
penguins = sns.load_dataset('penguins').select_dtypes('number').dropna()
corr = penguins.corr()
# Unstack to get pairs, remove self-correlations, sort
pairs = (corr
.unstack()
.reset_index()
.rename(columns={'level_0': 'var1', 'level_1': 'var2', 0: 'r'})
.query('var1 != var2')
.assign(abs_r=lambda df: df['r'].abs())
.sort_values('abs_r', ascending=False)
.drop_duplicates(subset='abs_r')
)
print(pairs.head(6).to_string(index=False))Büyük Veri Kümelerinde Isı Haritaları: Alt Kümeleme
Çok sayıda sütun içeren DataFrame değerlerinde tam korelasyon ısı haritası okunamaz hâle gelir. Daha iyi bir yaklaşım, korelasyon matrisini |r| değeri bir eşikten (örneğin 0.5) yüksek olan çiftleri gösterecek şekilde filtrelemek veya yalnızca hedef değişkenle en yüksek korelasyona sahip özellikleri seçmektir. Ayrıca alana göre alt kümeleme de yapabilirsiniz; örneğin bir işletme veri kümesinde finansal ölçütler arasındaki korelasyonları operasyonel ölçütlerden ayrı olarak görselleştirebilirsiniz.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# Show only features with |r| > 0.4 with any other feature
penguins = sns.load_dataset('penguins').select_dtypes('number').dropna()
corr = penguins.corr()
# Filter columns that have at least one high correlation (excluding diagonal)
high_corr = (corr.abs() > 0.4).any(axis=1)
filtered = corr.loc[high_corr, high_corr]
mask = np.triu(np.ones_like(filtered, dtype=bool))
sns.heatmap(filtered, mask=mask, annot=True,
fmt='.2f', cmap='coolwarm', vmin=-1, vmax=1)
plt.title('High-Correlation Subset')
plt.tight_layout()
plt.show()Isı Haritalarını Dosyalara Kaydetme
Isı haritaları çoğu zaman raporlara ve sunumlara eklenir. Isı haritasını oluşturduktan sonra kaydetmek için plt.savefig('filename.png', dpi=150, bbox_inches='tight') çağrısını yapın. bbox_inches='tight' bağımsız değişkeni, eksen etiketlerinin kırpılmasını önler. PDF raporları için format='pdf' kullanın. sns.clustermap kullanırken şekil, döndürülen nesnede saklanır: g = sns.clustermap(...); g.savefig('plot.png').
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
tips = sns.load_dataset('tips')
corr = tips.select_dtypes('number').corr()
mask = np.triu(np.ones_like(corr, dtype=bool))
fig, ax = plt.subplots(figsize=(6, 5))
sns.heatmap(corr, mask=mask, annot=True, fmt='.2f',
cmap='coolwarm', vmin=-1, vmax=1,
linewidths=0.5, ax=ax)
ax.set_title('Correlation Heatmap')
# Save to file
plt.savefig('/tmp/correlation_heatmap.png', dpi=150, bbox_inches='tight')
plt.close()
print('Saved to /tmp/correlation_heatmap.png')Kısa Kontrol
Bu derste öğrendikleriniz doğrultusunda korelasyon ısı haritalarını ne kadar anladığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: DataFrame.corr() ikili korelasyonları hesaplar, sns.heatmap bunları iki yönlü renk haritaları ve açıklamalarla renkli bir ızgara olarak görüntüler ve üçgenin üst kısmını maskelemek gereksiz tekrarı ortadan kaldırır. Sırada, her yeni veri kümesini profillemek için sistematik bir kontrol listesi olan kapsamlı Keşifsel Veri Analizi pipeline'ını inceleyeceğiz.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Korelasyon Matrisleri için Isı Haritaları” dersi ücretsiz mi?
Evet — “Korelasyon Matrisleri için Isı Haritaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Korelasyon Matrisleri için Isı Haritaları” dersinde ne öğreneceğim?
DataFrame.corr() ile korelasyon matrisi hesaplayın ve bunu sns.heatmap ile renklendirilmiş bir ısı haritası olarak görselleştirin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Korelasyon Matrisleri için Isı Haritaları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Dağılım Grafikleri: histplot ve kdeplot
- Kategorik Grafikler: boxplot, barplot, violinplot
- Dağılım ve Çiftli Grafikler
- Korelasyon Matrisleri için Isı Haritaları