Kalau kamu sedang belajar analisis data, salah satu langkah pertama yang wajib dilakukan sebelum masuk ke pemodelan kita harus memahami hubungan antar variabel. Salah satu cara paling cepat dan enak dilihat untuk itu adalah lewat heatmap korelasi menggunakan pustaka Seaborn di Python.
Di artikel ini kita akan membahas apa itu korelasi, kenapa heatmap, sampai contoh kode yang bisa kamu coba.
Apa Itu Korelasi?
Korelasi adalah ukuran statistik yang menunjukkan seberapa kuat dan ke arah mana hubungan antara dua variabel numerik. Nilainya berkisar dari -1 sampai 1:
- Mendekati 1 → hubungan positif kuat (kalau variabel A naik, variabel B juga cenderung naik)
- Mendekati -1 → hubungan negatif kuat (kalau variabel A naik, variabel B cenderung turun)
- Mendekati 0 → hampir tidak ada hubungan linear
Metode yang paling umum dipakai adalah korelasi Pearson, dan di Python kita bisa menghitungnya cukup dengan satu baris kode lewat Pandas.
Korelasi Itu tidak selalu berlawan, ini dia perbandingan korelasi yang tidak berlawanan dan berlawanan
Korelasi Positif (Searah) vs Negatif (Berlawanan Arah)
Banyak yang mengira korelasi itu selalu soal “berlawanan arah”, padahal korelasi juga bisa searah. Dua variabel dikatakan searah kalau nilainya sama-sama naik atau sama-sama turun bersamaan — ini yang disebut korelasi positif. Sebaliknya, kalau satu variabel naik tapi variabel lain malah turun, itu korelasi negatif.
| Pola hubungan | Nilai r | Contoh |
|---|---|---|
| Searah (naik bareng / turun bareng) | Positif, 0 sampai 1 | Panjang Petal naik → Lebar Petal ikut naik |
| Berlawanan arah (satu naik, satunya turun) | Negatif, -1 sampai 0 | Lebar Sepal naik → Panjang Petal cenderung turun |
| Tidak ada pola jelas | Mendekati 0 | Dua variabel yang saling lepas |
Pada dataset Iris yang jadi contoh di artikel ini, Panjang Petal dan Lebar Petal punya korelasi positif yang sangat kuat (r = 0.96) — jadi keduanya searah, bukan berlawanan. Di heatmap nanti, arah hubungan ini langsung terlihat dari warnanya: merah untuk korelasi positif/searah, dan biru untuk korelasi negatif/berlawanan arah.
Berikut juga contoh Sehari-hari
Supaya lebih mudah dipahami, berikut contoh korelasi dalam kehidupan sehari-hari beserta perkiraan nilai r-nya:
| Contoh | Arah | Perkiraan r | Penjelasan |
|---|---|---|---|
| Tinggi badan vs berat badan | Searah (positif) | r ≈ 0.7 – 0.9 | Makin tinggi seseorang, umumnya berat badannya juga makin besar |
| Jam belajar vs nilai ujian | Searah (positif) | r ≈ 0.5 – 0.8 | Makin lama belajar dengan efektif, nilai ujian cenderung makin tinggi |
| Suhu udara vs penjualan es krim | Searah (positif) | r ≈ 0.8 | Makin panas cuaca, penjualan es krim makin laris |
| Kecepatan mengemudi vs waktu tempuh | Berlawanan (negatif) | r ≈ -0.7 | Makin cepat mengemudi, waktu tempuh makin singkat |
| Harga barang vs jumlah pembeli | Berlawanan (negatif) | r ≈ -0.5 – -0.8 | Makin mahal harga, biasanya makin sedikit yang membeli |
| Jumlah jam nonton TV vs waktu olahraga | Berlawanan (negatif) | r ≈ -0.3 – -0.5 | Makin banyak nonton TV, waktu untuk olahraga cenderung makin sedikit |
| Nomor sepatu vs skor IQ | Nyaris tidak ada | r ≈ 0.0 – 0.1 | Dua hal ini secara logis tidak saling memengaruhi |
Sebagai patokan cepat, berikut kategori kekuatan korelasi yang umum dipakai (berlaku untuk nilai positif maupun negatif, tinggal lihat tandanya):
- 0.00 – 0.19 → sangat lemah / nyaris tidak ada hubungan
- 0.20 – 0.39 → lemah
- 0.40 – 0.59 → sedang
- 0.60 – 0.79 → kuat
- 0.80 – 1.00 → sangat kuat
Kenapa Harus Divisualisasikan dengan Heatmap?
Jika kamu punya 10 variabel. Itu artinya ada matriks korelasi 10×10 = 100 angka. Membaca satu per satu jelas melelahkan dan gampang salah tangkap pola.
Heatmap menyelesaikan masalah itu dengan mengubah angka menjadi warna. Warna merah pekat menandakan korelasi positif kuat, biru pekat menandakan korelasi negatif kuat, dan warna pucat menandakan hubungan yang lemah. Hasilnya, pola-pola penting bisa langsung “kelihatan” hanya dengan sekali lihat.
Instalasi Library yang Dibutuhkan
Sebelum mulai, pastikan sudah menginstal Seaborn, Matplotlib, dan Pandas:
pip install seaborn matplotlib pandas
Contoh Kode: Membuat Heatmap Korelasi
ini dia contoh lengkap menggunakan dataset Iris (dataset klasik yang sering dipakai untuk latihan):
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# Memuat data
data = load_iris(as_frame=True)
df = data.frame.drop(columns=["target"])
df.columns = ["Panjang Sepal", "Lebar Sepal", "Panjang Petal", "Lebar Petal"]
# Menghitung matriks korelasi Pearson
corr = df.corr(method="pearson")
# Membuat heatmap
plt.figure(figsize=(6.5, 5.2))
sns.heatmap(
corr,
annot=True, # tampilkan nilai angka di tiap sel
fmt=".2f", # format 2 angka desimal
cmap="coolwarm", # skema warna
vmin=-1, vmax=1,
square=True,
linewidths=0.6,
linecolor="white",
cbar_kws={"label": "Koefisien Korelasi (r)"}
)
plt.title("Heatmap Korelasi Antar Fitur Dataset Iris")
plt.tight_layout()
plt.show()
Hasilnya kira-kira seperti ini:
Membaca Hasilnya
Dari heatmap di atas, ada beberapa insight yang langsung kelihatan:
- Panjang Petal dan Lebar Petal berkorelasi sangat kuat (r = 0.96) — artinya kalau petal makin panjang, biasanya makin lebar juga.
- Panjang Sepal juga berkorelasi kuat dengan Panjang Petal (r = 0.87) dan Lebar Petal (r = 0.82).
- Lebar Sepal justru cenderung berkorelasi negatif dengan variabel lain, meski tidak terlalu kuat (sekitar -0.12 sampai -0.43).
Diagonal utama selalu bernilai 1.00 karena itu adalah korelasi variabel terhadap dirinya sendiri, dan matriksnya simetris, nilai di atas dan di bawah diagonal selalu sama.
Tips Kustomisasi Heatmap
Beberapa parameter sns.heatmap() yang sering dipakai untuk mempercantik atau menyesuaikan tampilan:
| Parameter | Fungsi |
|---|---|
annot=True | Menampilkan nilai angka di setiap sel |
cmap | Mengatur skema warna, misalnya "coolwarm", "viridis", "Blues" |
fmt | Format angka, misalnya .2f untuk 2 desimal |
vmin, vmax | Membatasi skala warna (untuk korelasi biasanya -1 dan 1) |
mask | Menyembunyikan sebagian sel, misalnya segitiga atas yang redundan |
linewidths | Menambahkan garis pemisah antar sel |
Kalau ingin tampilan lebih rapi tanpa duplikasi (karena matriks korelasi simetris), kamu bisa menambahkan mask untuk menyembunyikan segitiga atas:
import numpy as np
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(corr, mask=mask, annot=True, cmap="coolwarm", vmin=-1, vmax=1)
Kesimpulan
Heatmap korelasi adalah salah satu alat paling praktis dalam tahap eksplorasi data. Dengan Seaborn, kita hanya butuh beberapa baris kode untuk mengubah tabel angka yang membingungkan menjadi visual yang mudah dibaca dan langsung memberi insight. Cocok dipakai sebelum masuk ke tahap pemodelan, terutama untuk mendeteksi potensi multikolinearitas antar variabel.
Selamat mencoba, dan kalau ada pertanyaan seputar analisis data lainnya, jangan ragu untuk eksplorasi lebih lanjut!