Pandas & NumPy Academy · Pelajaran

Peta Panas untuk Matriks Korelasi

Hitung matriks korelasi dengan DataFrame.corr() dan visualisasikan sebagai peta panas berkode warna dengan sns.heatmap.

Pelajaran 4 dari 413 langkah

Peta Panas untuk Matriks Korelasi adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa Itu Matriks Korelasi?

Matriks korelasi adalah tabel persegi yang entri (i, j)-nya berisi koefisien korelasi Pearson antara kolom i dan kolom j. Nilainya berkisar dari -1 (korelasi linear negatif sempurna) hingga +1 (positif sempurna), sedangkan 0 berarti tidak ada hubungan linear. Diagonalnya selalu bernilai 1 (sebuah variabel berkorelasi sempurna dengan dirinya sendiri). Matriks korelasi merupakan langkah pertama untuk memahami variabel mana yang bergerak bersama sebelum membangun model.

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))

Menghitung Matriks Korelasi

Panggil DataFrame.corr() untuk menghitung korelasi Pearson berpasangan bagi semua kolom numerik. Parameter method mengatur korelasi yang dihitung: 'pearson' (default, linear), 'spearman' (berbasis peringkat, tahan terhadap pencilan dan hubungan monoton non-linear), atau 'kendall'. Untuk data keuangan atau data hitungan yang menceng, Spearman sering kali lebih informatif daripada Pearson.

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))

Heatmap Dasar dengan sns.heatmap

sns.heatmap(data) menerima array 2D atau DataFrame dan merendernya sebagai kisi warna — warna setiap sel menyandikan nilai numeriknya. Jika diterapkan pada matriks korelasi, warna hangat (merah) biasanya mewakili korelasi positif dan warna sejuk (biru) mewakili korelasi negatif. Parameter annot=True mencetak nilai numerik di dalam setiap sel, yang penting untuk membaca heatmap korelasi secara akurat.

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()

Memilih Peta Warna yang Tepat

Untuk matriks korelasi, selalu gunakan peta warna divergen yang berpusat pada nol: cmap='coolwarm', 'RdBu_r', atau 'vlag'. Peta ini menggunakan satu warna untuk nilai positif, warna lain untuk nilai negatif, dan titik tengah netral pada nol. Hindari peta warna berurutan (seperti 'Blues') untuk data korelasi karena peta tersebut membuat korelasi positif dan negatif tidak dapat dibedakan secara visual. Tetapkan vmin=-1, vmax=1 untuk mengunci skala warna pada rentang korelasi penuh.

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()

Menyamarkan Segitiga Atas

Karena matriks korelasi bersifat simetris (corr[i,j] == corr[j,i]), menampilkan kedua bagiannya adalah redundan. Gunakan np.triu untuk membuat mask segitiga atas dan teruskan mask tersebut ke mask= dalam sns.heatmap. Ini mengurangi jumlah sel hingga setengahnya, sehingga plot tidak terlalu penuh dan lebih mudah dibaca. Nilai diagonal (semuanya 1.0) juga dapat disamarkan karena tidak memberikan informasi.

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()

Menyesuaikan Anotasi dan Ukuran Sel

Atur format anotasi dengan fmt= (misalnya '.2f' untuk dua angka desimal) dan ukuran font dengan annot_kws={'size': 10}. Parameter linewidths menambahkan garis tipis di antara sel, sehingga kisi lebih mudah dibaca untuk matriks besar. Gunakan square=True untuk memaksa sel berbentuk persegi terlepas dari dimensi gambar, sehingga heatmap tampak rapi dan seimbang.

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()

Pengelompokan dengan clustermap

sns.clustermap() mengurutkan ulang baris dan kolom menggunakan pengelompokan hierarkis untuk mengelompokkan variabel dengan pola korelasi serupa. Hal ini memudahkan identifikasi blok fitur yang berkorelasi dalam matriks besar. Dendrogram pada sumbu atas dan kiri menunjukkan pohon pengelompokan. Gunakan method='ward' dan metric='euclidean' sebagai default yang masuk akal untuk pengelompokan berbasis korelasi.

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()

Heatmap untuk Data Tabel Pivot

Heatmap tidak terbatas pada matriks korelasi — tabel numerik 2D apa pun dapat memanfaatkan penyandian warna. Pola yang umum adalah menghitung tabel pivot (misalnya rata-rata tip berdasarkan hari dan waktu), lalu memvisualisasikannya sebagai heatmap. Dengan demikian, tabel angka yang padat berubah menjadi kisi warna yang dapat dipindai seketika, sehingga nilai tertinggi dan terendah langsung terlihat secara visual.

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()

Menafsirkan Nilai Korelasi

Saat menafsirkan korelasi, gunakan patokan kasar berikut: |r| < 0.2 = dapat diabaikan, 0.2-0.4 = lemah, 0.4-0.6 = sedang, 0.6-0.8 = kuat, > 0.8 = sangat kuat. Namun, korelasi tidak memberi tahu apa pun tentang sebab-akibat dan dapat bersifat semu (berkorelasi secara kebetulan akibat variabel pengganggu ketiga). Selalu padukan analisis korelasi numerik dengan scatter plot untuk memastikan bahwa hubungannya benar-benar linear dan bukan disebabkan oleh pencilan.

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))

Heatmap Dataset Besar: Membuat Subset

Untuk DataFrames dengan banyak kolom, heatmap korelasi lengkap menjadi tidak terbaca. Pendekatan yang lebih baik adalah memfilter matriks korelasi agar hanya menampilkan pasangan dengan |r| di atas ambang batas (misalnya 0.5), atau hanya memilih fitur yang paling berkorelasi dengan variabel target. Anda juga dapat membuat subset berdasarkan bidang — misalnya, memplot korelasi antar-metrik keuangan secara terpisah dari metrik operasional dalam dataset bisnis.

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()

Menyimpan Heatmap ke File

Heatmap sering disertakan dalam laporan dan presentasi. Panggil plt.savefig('filename.png', dpi=150, bbox_inches='tight') setelah membuat heatmap untuk menyimpannya. Argumen bbox_inches='tight' mencegah label sumbu terpotong. Untuk laporan PDF, gunakan format='pdf'. Saat menggunakan sns.clustermap, gambar disimpan dalam objek yang dikembalikan: 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')

Pemeriksaan Singkat

Uji pemahaman Anda tentang heatmap korelasi dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa DataFrame.corr() menghitung korelasi berpasangan, sns.heatmap merendernya sebagai kisi warna dengan peta warna divergen dan anotasi, serta penyamaran segitiga atas menghilangkan redundansi. Selanjutnya kita akan mempelajari pipeline Analisis Data Eksploratif secara menyeluruh — daftar periksa sistematis untuk membuat profil dataset baru apa pun.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Peta Panas untuk Matriks Korelasi” gratis?

Ya — teks lengkap “Peta Panas untuk Matriks Korelasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Peta Panas untuk Matriks Korelasi”?

Hitung matriks korelasi dengan DataFrame.corr() dan visualisasikan sebagai peta panas berkode warna dengan sns.heatmap. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Peta Panas untuk Matriks Korelasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Plot Distribusi: histplot dan kdeplot
  2. Plot Kategorikal: boxplot, barplot, violinplot
  3. Plot Sebaran dan Plot Pasangan
  4. Peta Panas untuk Matriks Korelasi
← Kembali ke Pandas & NumPy Academy