Dua peta panas berdampingan python

impor plotly. graph_objects as go import numpy as np # Bangun persegi panjang sebagai peta panas # tentukan tepi kotak peta panas phi = (1 + np. akar(5) )/2. # rasio emas xe = [0, 1, 1+(1/(phi**4)), 1+(1/(phi**3)), phi] kamu = [0, 1/(phi**3) . Gambar(data=go. Peta panas( x = np. urutkan(xe), y = np. sort(ye), z = z, type = 'heatmap', colorscale = 'Viridis')) # Tambahkan plot garis spiral def spiral(th). a = 1. 120529 b = 0. 306349 r = a*np. exp(-b*th) kembali (r*np. cos(th), r*np. sin(th)) theta = np. linspace(-np. pi/13,4*np. pi,1000); . add_trace(lanjutkan. Sebar(x= -x+x[0], y= y-y[0], baris =dict(color='putih',lebar=3))) axis_template = dict(rentang = [0,1. 6], autorange = False, showgrid = False, zeroline = False, linecolor = 'black', showticklabels = False, ticks = '' ) fig. update_layout(margin = dict(t=200,r=200,b=200,l=200), xaxis = axis_template, yaxis = axis_template, showlegend = False, width = 700, height = 700, autosize = False ) fig. menunjukkan()

Menggunakan peta panas untuk memvisualisasikan matriks kebingungan, pergerakan deret waktu, perubahan suhu, matriks korelasi, dan nilai interaksi SHAP

(Sumber. flaticon)

Peta panas dapat menghidupkan data Anda. Serbaguna dan eye-catching. Ada banyak situasi di mana mereka dapat menyoroti hubungan penting dalam data Anda. Secara khusus, kami akan membahas bagaimana Anda dapat menggunakannya untuk memvisualisasikan

  • Matriks kebingungan untuk akurasi model
  • Data deret waktu untuk menunjukkan pergerakan antar grup
  • Data deret waktu untuk menunjukkan perubahan suhu
  • Matriks korelasi
  • Rata-rata nilai interaksi SHAP

Sepanjang jalan, Anda akan mempelajari berbagai cara untuk menyesuaikan peta panas. Kami akan membahas kode untuk membuatnya dan Anda dapat menemukan proyek lengkapnya di Github

Untuk memulai, Anda dapat menonton video ini untuk ikhtisar

Apa itu Peta Panas?

Mari kita mulai dengan membahas apa itu peta panas dan mengapa itu sangat berguna. Anda dapat melihat contohnya pada Gambar 1. Kami memiliki variabel 1 pada sumbu y. Dalam hal ini, variabel 1 dapat mengambil 4 nilai yang berbeda. Itu adalah "V1–1" adalah nilai pertama untuk variabel 1. Demikian pula, kami memiliki variabel 2 pada sumbu y. Ada juga variabel ke-3. Itu adalah nilai di dalam setiap sel. Warna setiap sel ditentukan oleh nilai variabel ini

Gambar 1. contoh peta panas (Sumber. pengarang)

Jadi dengan menggunakan peta panas kita dapat memvisualisasikan hubungan antara 3 variabel pada bidang 2D. Hubungan ini bisa rumit. Inilah mengapa warna digunakan. Itu dapat menyoroti aspek-aspek penting dari hubungan dan membuatnya lebih mudah untuk dipahami

Perlu diingat bahwa peta panas masih terbatas. Variabel 1 dan variabel 2 harus diskrit atau kategorikal. Atau, jika mereka berkelanjutan, kita harus dapat mengelompokkannya. Di sisi lain, variabel 3 harus menjadi variabel kontinu. Semoga ini menjadi jelas ketika kita membahas 5 peta panas kami di bawah ini

1) Matriks kebingungan

Peta panas pertama kami, pada Gambar 2, adalah visualisasi dari matriks kebingungan. Ini berasal dari model yang digunakan untuk memprediksi bahasa sepotong teks. Sumbu y memberikan bahasa teks yang sebenarnya. Sumbu x memberikan bahasa yang diprediksi oleh model. Angka-angka pada diagonal, memberikan hitungan prediksi yang benar. Off-diagonals, berikan jumlah prediksi yang salah. Misalnya, bahasa Inggris (eng) salah diprediksi sebagai bahasa Jerman (deu) sebanyak 11 kali

Gambar 2. matriks korelasi (Sumber. pengarang)

Memvisualisasikan matriks kebingungan seperti ini berguna ketika variabel target Anda memiliki banyak kelas. Ini dapat menyoroti kesalahan model. Sebagai contoh, kita melihat bahwa model paling sering membingungkan baik bahasa Portugis (por) untuk bahasa Spanyol (spa) (124 kali) atau bahasa Spanyol untuk bahasa Portugis (84 kali). Ini masuk akal karena, di antara semua bahasa, keduanya paling mirip secara leksikal

Kode peta panas

Untuk membuat peta panas ini, kita mulai dengan mengimpor paket-paket di bawah ini. Fungsi peta panas berasal dari paket seaborn (baris 6). Kami akan menggunakan paket yang sama untuk semua 5 peta panas. Pastikan Anda telah menginstalnya

Kami memiliki larik 2D yang digunakan untuk mengisi peta panas di bawah ini. Ini memberikan jumlah prediksi yang benar dan salah. Anda dapat melihat bahwa subarray pertama (baris 2) sesuai dengan nilai pada baris pertama peta panas pada Gambar 2. Semua peta panas diisi menggunakan larik 2D yang serupa dengan yang ini. Jika Anda perlu menggunakan kode ini untuk peta panas lain, Anda dapat mengganti matriks kebingungan ini dengan larik 2D Anda

Untuk saat ini, kami telah meng-hardcode array 2D. Artikel di bawah membawa Anda melalui proses bagaimana kami benar-benar mendapatkan angka-angka ini. Singkatnya, kami telah membangun jaringan saraf menggunakan teknik NLP. Kami kemudian menggunakan model ini untuk memprediksi bahasa teks dalam kumpulan data uji. Angka yang Anda lihat di atas berasal dari prediksi tersebut

Identifikasi Bahasa Jaringan Syaraf Dalam

Mengklasifikasikan bahasa sepotong teks menggunakan DNN dan tri-gram karakter

menuju ilmu data. com

Menggunakan array 2D ini kami membuat DataFrame panda (conf_matrix_df). Kami menggunakan bahasa yang berbeda sebagai nama kolom dan baris

Terakhir, kami memvisualisasikan DataFrame ini menggunakan fungsi peta panas seaborn (baris 5–9). Seiring dengan conf_matrix_df, kami telah melewati beberapa parameter. cmap memberikan skema warna. Menyetelnya ke 'coolwarm' memberi kita sel merah dan biru. Menyetel annot ke true memberi kita angka di setiap sel. Tanpanya, kita hanya akan memiliki warna. fmt mendefinisikan format warna. Kita akan melihat beberapa variasi parameter ini saat membuat peta panas lainnya

Parameter terakhir adalah vmax. Ini menentukan nilai maksimum untuk skala warna. Jika Anda tidak memberikan nilai untuk parameter ini, nilai default akan menjadi nilai terbesar di peta panas. Dalam hal ini, itu adalah jumlah prediksi prancis (fra) yang benar (i. e. 4999). Kami telah menetapkan nilainya menjadi 200 karena ini memudahkan untuk membedakan prediksi yang salah. Anda dapat melihat apa yang kami maksud pada Gambar 3. Peta panas ini dibuat menggunakan nilai default untuk vmax

Gambar 3. matriks korelasi tanpa vmax (Sumber. author)2) Gerakan antar kelompok

Peta panas kedua kami menunjukkan bagaimana kami dapat memvisualisasikan perubahan dalam variabel kategori melalui waktu. Secara khusus, kami menampilkan indeks kualitas udara (AQI) di kota-kota di Amerika. Sumbu y memberikan level AQI pada tahun 2010 dan sumbu x memberikan level pada tahun 2016. Nilai sel memberikan jumlah kota yang berpindah dari satu tingkat ke tingkat lainnya. Sebagai contoh, kita dapat melihat bahwa 20 kota meningkat dari tingkat tidak sehat (kelompok sensitif) menjadi tingkat sedang

Gambar 4. Tingkat AQI melalui waktu (Sumber. pengarang)

AQI adalah nilai antara 0 dan 500. Semakin tinggi nilainya maka semakin tinggi tingkat pencemaran udaranya. AQI dihitung menggunakan 4 polutan yang berbeda — Nitrogen Dioksida (NO2), Sulfur Dioksida (SO2), Karbon Monoksida (CO) dan Ozon (O3). Khususnya, untuk mendapatkan AQI akhir, kami mengambil AQI maksimum dari 4 polutan ini. Pada Gambar 5, Anda dapat melihat rentang AQI untuk berbagai tingkat kekhawatiran. Kami telah menggunakan level ini di peta panas kami

Gambar 5. Tingkat AQI (Sumber. Sekarang Udara)

Untuk membuat peta panas, kita mulai dengan memuat dataset kita (baris 2). Anda dapat menemukan kumpulan data ini di Kaggle. Pembacaan dilakukan setiap hari. Kami hanya tertarik pada tahun membaca. Jadi kami membuat kolom dengan tahun pembacaan (baris 5–6)

Ini adalah contoh ketika variabel pada sumbu x dan y awalnya merupakan variabel kontinu. Seperti yang disebutkan, kita perlu mengelompokkan variabel ini. Fungsi aqiGroup di bawah ini digunakan untuk melakukan itu. Ini akan mengembalikan level berdasarkan nilai AQI. Ini menggunakan rentang yang sama seperti pada Gambar 5

Untuk mendapatkan matriks 2D terakhir kita, kita perlu melakukan beberapa pemrosesan data. Kita mulai dengan menghitung nilai AQI menggunakan nilai dari 4 polutan (baris 2). Kemudian untuk setiap kota, kami menghitung AQI maksimum di setiap tahunnya (baris 5). Jadi nilai yang Anda lihat di peta panas sebenarnya didasarkan pada nilai AQI maksimum pada tahun 2010 dan 2016. Terakhir, kami menggunakan fungsi aqiGroup untuk mengelompokkan nilai AQI (baris 8)

Kami mendapatkan semua nilai AQI pada tahun 2016 (baris 2–3) dan 2010 (baris 6–7). Kami kemudian menggabungkan tabel-tabel ini (baris 10). Dalam beberapa kasus, sebuah kota mungkin memiliki pembacaan dalam satu tahun dan tidak pada tahun lainnya. Dalam hal ini, kami mengganti nilai yang hilang dengan 'No Reading' (baris 11). Kumpulan data akhir ini, AQI, akan berisi level pada tahun 2016 dan 2010 untuk setiap kota

Oke, sekarang setelah kita memiliki dataset ini kita bisa menggunakannya untuk membuat array 2D, hm_array. Ini digunakan untuk mengisi peta panas. Ini akan memiliki struktur yang sama dengan larik hardcode yang kita lihat untuk peta panas pertama. Array dibuat pada baris 6 sampai 12. Di mana untuk setiap kombinasi level, kami menghitung jumlah record dalam kumpulan data AQI (baris 10–11). Seperti sebelumnya, kami membuat dataFrame menggunakan larik 2D ini. Kami menggunakan level AQI sebagai nama kolom dan baris

Terakhir, kami membuat peta panas seperti sebelumnya. Kali ini kami memiliki nilai parameter yang berbeda. Kami telah menggunakan skema warna yang berbeda, cmap. Kami telah menetapkan cbar ke false. Ini menyembunyikan bilah warna. Kami juga telah menggunakan parameter linewidths dan linecolor untuk memberikan garis kisi hitam peta panas

3) Suhu berubah seiring waktu

Mirip dengan peta panas terakhir, kami menggunakan yang ini untuk memvisualisasikan data deret waktu. Kecuali sekarang, kami menunjukkan bagaimana variabel kontinu berubah sepanjang waktu. Pada Gambar 4, Anda dapat melihat suhu global rata-rata sepanjang waktu. Ada pembacaan untuk setiap bulan dari tahun 1900 hingga 2016. Anda dapat dengan jelas melihat dampak perubahan iklim di bulan-bulan berikutnya. Mungkin kita telah mengambil istilah peta panas terlalu harfiah

Gambar 6. suhu rata-rata sepanjang waktu (Sumber. pengarang)

Kita mulai dengan memuat dataset kita (baris 1). Anda dapat menemukannya di [datahub]. Dataset berisi dua sumber pembacaan suhu yang berbeda. Kami hanya memilih bacaan GISTEMP (baris 4). Kami kemudian membuat kolom untuk tahun dan bulan untuk setiap bacaan (baris 7–9)

Sama seperti sebelumnya, kami membuat larik 2D yang digunakan untuk mengisi peta panas. Di peta panas sebelumnya, semua larik 2D berbentuk simetris. Ini tidak selalu harus demikian. Untuk peta panas ini, ada subarray untuk setiap bulan (mis. e 1 sampai 12). Masing-masing subarray ini akan berisi nilai suhu setiap tahun dari tahun 1900 hingga 2016. Jadi kami sekarang memiliki array 12x117. Kami membuat DataFrame menggunakan tahun sebagai nama kolom dan bulan sebagai nama baris

Kami memvisualisasikan DataFrame ini seperti sebelumnya. Perbedaan terbesar adalah kami telah menetapkan parameter xticklabels ke 10. Artinya, hanya setiap label ke-10 pada sumbu x yang ditampilkan. Anda dapat melihat ini pada Gambar 6 di mana hanya label untuk 1900, 1910, 1920, dll. ditampilkan

4) Matriks Korelasi

Peta panas keempat kami mungkin yang pernah Anda lihat sebelumnya. Penggunaan umum adalah untuk memvisualisasikan korelasi dalam kumpulan data. Sebagai contoh, kami memiliki matriks korelasi dataset harga rumah pada Gambar 7. Kami dapat menggunakan ini untuk mengidentifikasi multikolinearitas apa pun yang dapat menyebabkan masalah dalam model kami. Misalnya, X3 dan X4 berkorelasi negatif. Baris terakhir juga memberikan korelasi dengan variabel target, Y. Kami dapat menggunakan ini untuk memahami jika salah satu fitur memiliki hubungan yang signifikan dengan Y

Gambar 7. matriks korelasi (Sumber. pengarang)

Untuk membuat peta panas ini, kita mulai dengan memuat dataset kita (baris 2). Anda dapat menemukannya di repositori pembelajaran mesin UCI. Dengan menggunakan dataset ini, kami kemudian membuat matriks korelasi (baris 5). Hasilnya akan menjadi DataFrame panda. Nama kolom dan baris akan sama dengan nama fitur dalam kumpulan data

Anda mungkin telah memperhatikan bahwa, pada Gambar 7, sel-sel di atas diagonal kosong. Untuk melakukan ini pertama-tama kita perlu membuat topeng. Ini adalah larik 2D yang mirip dengan yang kami gunakan untuk mengisi peta panas sebelumnya. Nilai array harus 'Benar' untuk sel yang ingin Anda tampilkan. Kalau tidak, untuk sel kosong mereka harus 'Salah'. Kami menggunakan kode di bawah ini untuk membuat topeng

Terakhir, kita dapat menampilkan peta panas kita. Satu-satunya perbedaan untuk yang satu ini adalah kita perlu meneruskan topeng sebagai parameter (baris 8)

5) Nilai interaksi SHAP

Peta panas terakhir kami dapat digunakan untuk menyorot fitur yang penting untuk prediksi model. Itu dibuat dengan mengambil nilai interaksi SHAP rata-rata. Ini menunjukkan efek utama rata-rata pada diagonal. Sebagai contoh, kita dapat melihat bahwa efek utamanya besar untuk pengalaman, gelar, kinerja, dan penjualan. Demikian pula, efek interaksi rata-rata berada di luar diagonal. Kita bisa melihat pengalaman itu. gelar dan prestasi. efek interaksi penjualan yang signifikan

Angka 8. rata-rata nilai interaksi SHAP (Sumber. pengarang)

Kami tidak akan membahas kode yang digunakan untuk membuat peta panas ini. Jika Anda tertarik, Anda dapat menemukannya di artikel di bawah ini. Kami mendalami nilai interaksi SHAP. Kami juga membuat dan menginterpretasikan plot lain menggunakan nilai-nilai ini. Ini digunakan untuk menafsirkan model pembelajaran mesin Anda

Menganalisis Interaksi dengan SHAP

Menggunakan paket SHAP Python untuk mengidentifikasi dan memvisualisasikan interaksi dalam data Anda

menuju ilmu data. com

Saya harap artikel ini bermanfaat bagi Anda. Jika Anda ingin melihat lebih banyak, Anda dapat mendukung saya dengan menjadi salah satu anggota referensi saya. Anda akan mendapatkan akses ke semua artikel di media dan saya akan mendapatkan sebagian dari bayaran Anda

Bergabunglah dengan Medium dengan tautan rujukan saya — Conor O'Sullivan

Sebagai anggota Medium, sebagian dari biaya keanggotaan Anda diberikan kepada penulis yang Anda baca, dan Anda mendapatkan akses penuh ke setiap cerita…

conorosullyds. medium. com

Anda dapat menemukan saya di. Twitter. Youtube. Buletin — daftar untuk mendapatkan akses GRATIS ke kursus Python SHAP

Sumber Gambar

Semua gambar adalah milik saya sendiri atau diperoleh dari www. flaticon. com. Dalam kasus yang terakhir, saya memiliki "Lisensi penuh" seperti yang ditentukan dalam Paket Premium mereka

Bagaimana Anda memplot dua peta panas berdampingan di Python Seaborn?

Atur ukuran gambar dan sesuaikan padding antara dan di sekitar subplot
Buat dua bingkai data Panda
Buat gambar dan satu set subplot, ax1 dan ax2
Plot data persegi panjang sebagai matriks berkode warna, pada ax1 dan ax2
Pindahkan centang dan label centang (jika ada) ke kanan sumbu

Bagaimana cara menampilkan dua plot berdampingan dengan Python?

Bagaimana cara membuat dua plot berdampingan menggunakan Python? .
Membuat poin x, y1, y2 menggunakan numpy
Dengan nrows = 1, ncols = 2, index = 1, tambahkan subplot ke gambar saat ini, menggunakan metode subplot()
Plot garis menggunakan titik x dan y1, menggunakan metode plot()
Siapkan judul, label untuk sumbu X dan Y untuk Gambar 1, menggunakan plt

Bagaimana Anda membandingkan dua peta panas?

Perbandingan dua peta panas pada dasarnya hanyalah perbandingan dua histogram, atau distribusi. Jadi alternatif untuk pendekatan visual kami adalah menggunakan alat statistik yang menghitung perbedaan antara dua distribusi .

Bagaimana cara memplot peta panas dengan Python menggunakan Seaborn?

Kode Python langkah demi langkah untuk membuat peta panas .
Langkah 1 - Impor paket Python yang diperlukan
Langkah 2 - Muat kumpulan data
Langkah - 3 Buat array Python Numpy
Langkah 4 - Buat Pivot dengan Python
Langkah 5 - Buat larik untuk membubuhi keterangan peta panas
Langkah 6 - Buat figur Matplotlib dan tentukan plotnya