Visualisasi Data menggunakan SEABORN
Sebelum membahas lebih lanjut, mari kita simpulkan mengapa visualisasi menjadi hal yang penting dan wajib dikuasai oleh seorang data scientist.
Why ?
Jawabanya sederhana, visualisasi adalah media bagi seorang data scientist untuk bercerita tentang hal yang sedang dia analisa. Media ini yang nantinya berperan menceritakan dataset atau metode statistik yang sulit dibayangkan menjadi lebih mudah, tentunya dengan visual yang mendukung. Jika diibaratkan seorang pelukis yang dibenaknya banyak hal abstrak, maka dia perlu menuangkan isi kepala itu pada kanvas dengan warna dan gambar yang pas. Pelukis ini lah sang data scientist, dan kanvas, gambar, serta warna yang digunakan adalah data visualisasi.
Lantas bagaimana jika seorang data scientist tidak mampu menggunakan media visual ini dengan baik? Maka dia akan gagal bercerita, informasi tidak akan sampai dengan baik pada si pembaca, dan jika si pembaca ini adalah pemangku kepentingan di bisnis, maka bisa dibayangkan, bagaimana tersesatnya perusahaan karena si ‘orang data’ gagal bercerita dengan baik?
Seaborn for Visualization
Nah sekarang kita sudah tau dampak dari visualisasi, mari kita bahas visualisasi apa saja yang ada di library seaborn dan bisa kita pakai, khususnya untuk data numerik.
Kali ini saya menggunakan data Iris yang berisi tentang kategori (spesies) dari 3 jenis bunga, data tersebut dapat diakses dari seaborn, kita tinggal panggil:
import seaborn as sns
iris = sns.load_dataset('iris')
iris.head()
Dan seperti ini lah tampilan datanya:
Lalu apa yang kita lakukan? Distribusi! Langkah awal yang bisa kita lakukan adalah melihat sebaran data, ini bisa dilakukan dengan distribusi displot dan juga boxplot. Seperti ini.
Dari kedua hal diatas, bisa kita lihat bagaimana sebaran data yang ada dari parameter sepal_length, termasuk apakah ada outlier atau tidak dari data tersebut. Hal ini bisa dilakuan berulang di parameter lain secara satu per satu, atau dengan fungi pengulangan for.
Setelah distribusi, correlation bisa menceritakan hal penting dalam hubungan antar parameter yang ada. Dimana kita tahu bahwa nilai korelasi berada di interval -1 hingga 1, menunjukan bahwa -1 berarti korelasi negatif sedangkan 1 sebaliknya. Langsung saja kita lakukan dengan heatmap dan joinplot, agar lebih mudah membayangkannya.
sns.heatmap(iris.corr(),cmap='Blues', annot= True)
Dari heatmap, kita bisa dengan mudah melihat hubungan antar parameter, warna sendiri menjadi tambahan informasi dimana semakin gelap semakin tinggi korelasi positifnya, begitu juga sebaliknya. Dan dengan tambahan anotasi, interval angka -1 sampai 1 juga akan muncul dan memudahkan pembaca untuk mengetahui secara langsung berapa angka pastinya. Jika kita kembali ambil contoh parameter sepal_length, kita bisa melihat relasi parameter tersebut denganlainnya secara vertikal atau horizontal. Taruhlah kita ingin melihat secara vertikal (atas ke bawah), maka kita dapat melihat bahwa petal_length memiliki korelasi tertinggi (korelasi positif) dengan nilai 0.87. Lalu jika kita ingin menganilsa lebih dalam diantara kedua parameter tersebut, maka kita dapat melanjutkannya menggunakan joinplot:
sns.jointplot(x='sepal_length', y='petal_length', data=iris, kind = 'reg')
Sekarang bisa terlihat lebih jelas, hubungan antara sepal_length dan petal_length, dan apa yang terjadi sehingga di heatmap sebelumnya nilai korelasi diantara mereka adalah 0,87. Bahkan pada joinplot, adanya tambahan visual distribusi antara kedua paramter (seperti yang dilakukan diawal) memudahkan kita melihat distribusi sekaligus korelasi data pada pusat dari si visualisasi joinplot tersebut. Bahkan bukan hanya itu, KIND pada joinplot akan memudahkan kita melihat banyak hubangan. Pada gambar diatas, regresi digunakan dimana ditulis dengan ’reg’, sedangkan masih ada lainnya hexbin, scattterplot, dan banyak lagi yang bisa digunakan di joinplot.
Selain distplot dan boxplot untuk melihat sebaran data, kemudian heatmap dan joinplot untuk membantu memudahkan kita melihat korelasi antara pamarater yang ada, ada juga pairplot yang tak kalah penting. Pairplot berguna untuk melihat dominasi dari suatu katergori/kelas terhadaps setiap parameter numerik yang ada. Jika kita kembali ke data set diatas, kategori atau kelas yang digunakan disini adalah jenis bunga, dimana data tersebut terdiri dari 3 jenis: setosa, versicolor, dan virginca. Mari kita lihat dengan seksama bagaiamana dominasi tiap kelas tersebut di setiap parameter yang ada:
sns.pairplot(hue='species', data=iris)
maka dari pairplot bisa kita perhatikan dengan mudah bahwa bunga setosa memiliki perbedaan karakter yang cukup besar jika dibandingkan dengan spesies lain, setosa memiliki lebar dan panjang kelopak (petal_width dan petal_length) yang lebih kecil sedangkan lebar sepalnya (sepal_width) lebih tinggi dan panjang sepalnya (sepal_length) lebih rendah dari lainnya.
Yah seperti itu mungkin, beberapa visual dan libary dari seaborn yang bisa kita gunakan sebagai seorang data scientist untuk lebih mudah bercerita. Masih banyak sebetulnya bawaan lain dari seaborn yang bisa kita gunakan, seperti FacetGrid, violinplot, clustermap, dan lainnya. Namun setidaknya yang kita diskusikan pada tulisan kali ini bisa mampu menjelaskan bagian penting saat kita ingin bercerita tentang data yang kita miliki.
Pada bahasan lanjut, visualisasi diatas juga memudahkan kita untuk menentukan kapan kita melakukan imputasi jika ada data yang null, kapan kita melakukan sintesis data jika terlihat bahwa kelas yang ada tidak seimbang, atau bahkan contohnya kapan kita melakukan transformasi dan scaling jika kita tahu bahwa distribusi data yang kita miliki kurang bagus dan memiliki banyak outlier.
Namun untuk tulisan kali ini, cukup sekian dulu, semoga bermanfaat.