Peta Haba untuk Matriks Korelasi
Kira matriks korelasi dengan DataFrame.corr() dan gambarkannya sebagai peta haba berkod warna dengan sns.heatmap.
Peta Haba untuk Matriks Korelasi ialah pelajaran Pandas & NumPy Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pandas & NumPy Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.
Apakah Matriks Korelasi?
Matriks korelasi ialah jadual segi empat sama yang entri (i, j) mengandungi pekali korelasi Pearson antara lajur i dan lajur j. Nilainya berjulat daripada -1 (korelasi linear negatif sempurna) hingga +1 (positif sempurna), manakala 0 bermaksud tiada hubungan linear. Diagonal sentiasa bernilai 1 (sesuatu pemboleh ubah berkorelasi sempurna dengan dirinya sendiri). Matriks korelasi ialah langkah pertama untuk memahami pemboleh ubah yang bergerak bersama sebelum membina 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))Mengira Matriks Korelasi
Panggil DataFrame.corr() untuk mengira korelasi Pearson berpasangan bagi semua lajur berangka. Parameter method mengawal korelasi yang hendak dikira: 'pearson' (lalai, linear), 'spearman' (berasaskan kedudukan, teguh terhadap nilai terpencil dan hubungan monotonik bukan linear), atau 'kendall'. Bagi data kewangan atau data kiraan yang condong, Spearman selalunya lebih bermaklumat berbanding 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))Peta Haba Asas dengan sns.heatmap
sns.heatmap(data) menerima tatasusunan 2D atau DataFrame dan memaparkannya sebagai grid warna — warna setiap sel mengekod nilai berangkanya. Apabila digunakan pada matriks korelasi, warna hangat (merah) biasanya mewakili korelasi positif dan warna sejuk (biru) mewakili korelasi negatif. Parameter annot=True mencetak nilai berangka di dalam setiap sel, yang penting untuk membaca peta haba korelasi dengan tepat.
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
Bagi matriks korelasi, sentiasa gunakan peta warna berpecah yang berpusat pada sifar: cmap='coolwarm', 'RdBu_r', atau 'vlag'. Peta ini menggunakan satu warna untuk nilai positif, warna lain untuk nilai negatif, dan titik tengah neutral pada sifar. Elakkan peta warna berjujukan (seperti 'Blues') untuk data korelasi kerana peta tersebut menyebabkan korelasi positif dan negatif tidak dapat dibezakan secara visual. Tetapkan vmin=-1, vmax=1 untuk menetapkan skala warna kepada julat 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()Menutup Segi Tiga Atas
Oleh sebab matriks korelasi adalah simetri (corr[i,j] == corr[j,i]), memaparkan kedua-dua bahagian adalah berlebihan. Gunakan np.triu untuk mencipta topeng segi tiga atas dan hantarkannya kepada mask= dalam sns.heatmap. Ini mengurangkan separuh bilangan sel, menjadikan plot kurang berserabut dan lebih mudah dibaca. Nilai diagonal (semuanya 1.0) juga boleh ditutup kerana tidak membawa maklumat.
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 Saiz Sel
Kawal format anotasi dengan fmt= (contohnya '.2f' untuk dua tempat perpuluhan) dan saiz fon dengan annot_kws={'size': 10}. Parameter linewidths menambah garisan nipis antara sel, lalu memudahkan grid besar dibaca. Gunakan square=True untuk memaksa sel berbentuk segi empat sama tanpa mengira dimensi rajah, yang memberikan peta haba penampilan yang kemas 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() menyusun semula baris dan lajur menggunakan pengelompokan hierarki untuk mengumpulkan pemboleh ubah yang mempunyai corak korelasi serupa. Ini memudahkan pengecaman kelompok ciri yang berkorelasi dalam matriks besar. Dendrogram pada paksi atas dan kiri menunjukkan pepohon pengelompokan. Gunakan method='ward' dan metric='euclidean' sebagai nilai lalai yang munasabah untuk pengelompokan berasaskan 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()Peta Haba untuk Data Jadual Pangsi
Peta haba tidak terhad kepada matriks korelasi — mana-mana jadual berangka 2D mendapat manfaat daripada pengekodan warna. Corak yang biasa ialah mengira jadual pangsi (contohnya purata tip mengikut hari dan masa), kemudian menggambarkannya sebagai peta haba. Ini menukarkan jadual nombor yang padat kepada grid warna yang boleh diimbas sepintas lalu, dengan nilai tertinggi dan terendah menonjol 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()Mentafsir Nilai Korelasi
Apabila mentafsir korelasi, gunakan anggaran berikut: |r| < 0.2 = boleh diabaikan, 0.2-0.4 = lemah, 0.4-0.6 = sederhana, 0.6-0.8 = kuat, > 0.8 = sangat kuat. Walau bagaimanapun, korelasi tidak memberitahu apa-apa tentang sebab-musabab, dan boleh bersifat palsu (berkorelasi secara kebetulan disebabkan oleh pemboleh ubah pengeliru ketiga). Sentiasa gabungkan analisis korelasi berangka dengan plot serakan untuk mengesahkan bahawa hubungan tersebut benar-benar linear dan tidak dipengaruhi oleh nilai terpencil.
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))Peta Haba Set Data Besar: Membuat Subset
Bagi DataFrames yang mempunyai banyak lajur, peta haba korelasi penuh menjadi sukar dibaca. Pendekatan yang lebih baik ialah menapis matriks korelasi supaya hanya pasangan dengan |r| melebihi ambang (contohnya 0.5) dipaparkan, atau memilih hanya ciri yang paling berkorelasi dengan pemboleh ubah sasaran. Anda juga boleh membuat subset mengikut domain — contohnya, memplot korelasi antara metrik kewangan secara berasingan daripada metrik operasi dalam set data perniagaan.
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 Peta Haba ke dalam Fail
Peta haba sering disertakan dalam laporan dan pembentangan. Panggil plt.savefig('filename.png', dpi=150, bbox_inches='tight') selepas mencipta peta haba untuk menyimpannya. Argumen bbox_inches='tight' menghalang label paksi daripada terpotong. Untuk laporan PDF, gunakan format='pdf'. Apabila menggunakan sns.clustermap, rajah 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')Semakan Pantas
Uji pemahaman anda tentang peta haba korelasi daripada pelajaran ini.
Ulang Kaji Pelajaran
Dalam pelajaran ini, anda telah mempelajari bahawa DataFrame.corr() mengira korelasi berpasangan, sns.heatmap memaparkannya sebagai grid warna dengan peta warna berpecah dan anotasi, manakala penutupan segi tiga atas menghapuskan lebihan. Seterusnya, kita akan meneroka pipeline Analisis Data Penerokaan yang lengkap — senarai semak sistematik untuk membuat profil mana-mana set data baharu.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Peta Haba untuk Matriks Korelasi” percuma?
Ya — teks penuh “Peta Haba untuk Matriks Korelasi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pandas & NumPy Academy, tingkat taraf kepada CoddyKit PRO. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Peta Haba untuk Matriks Korelasi”?
Kira matriks korelasi dengan DataFrame.corr() dan gambarkannya sebagai peta haba berkod warna dengan sns.heatmap. Anda berlatih Pandas & NumPy Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pandas & NumPy Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pandas & NumPy Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Peta Haba untuk Matriks Korelasi” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Plot Taburan: histplot dan kdeplot
- Plot Kategori: boxplot, barplot, violinplot
- Plot Serakan dan Plot Pasangan
- Peta Haba untuk Matriks Korelasi