Anda hanya diwajibkan untuk mengumpulkan file ini saja ke uploader yang disediakan di http://elearning2.uai.ac.id/. Ganti nama file ini saat pengumpulan menjadi tugas3_NIM.ipynb.
Keterlambatan: Pengumpulan tugas yang melebihi tenggat yang telah ditentukan tidak akan diterima. Keterlambatan akan berakibat pada nilai nol untuk tugas ini.
Kolaborasi: Anda diperbolehkan untuk berdiskusi dengan teman Anda, tetapi dilarang keras menyalin kode maupun tulisan dari teman Anda.
Terdapat lima packages yang Anda akan gunakan dalam mengerjakan tugas ini, yaitu:
Anda diperbolehkan (jika dirasa perlu) untuk mengimpor modul tambahan untuk tugas ini. Namun, seharusnya modul yang tersedia sudah cukup untuk memenuhi kebutuhan Anda. Untuk kode yang Anda ambil dari sumber lain, cantumkan URL menuju referensi tersebut jika diambil dari internet!
Perhatikan poin untuk tiap soal! Semakin kecil poinnya, berarti kode yang diperlukan untuk menjawab soal tersebut seharusnya semakin sedikit!
*Jangan mengubah isi kolom ini*
** 1. Analisis dan Manipulasi Data (/25 poin) **
1.1 (/2 poin)
1.2 (/2 poin)
1.3 (/2 poin)
1.4 (/4 poin)
1.5 (/3 poin)
1.6 (/5 poin)
1.7.a (/2 poin)
1.7.b (/3 poin)
1.7.c (/2 poin)
** 2. Visualisasi Data (/25 poin) **
2.1.a (/3 poin)
2.1.b (/7 poin)
2.2 (/2 poin)
2.3 (/2 poin)
2.4.a (/2 poin)
2.4.b (/6 poin)
2.5 (/3 poin)
NIM:
Nilai akhir: XX/50
Pada tugas kali ini, Anda akan mencoba menganalisis dan memanipulasi Titanic dataset. Titanic dataset adalah data penumpang kapal RMS Titanic yang mengalami kecelakaan pada tahun 1912. Data ini berisi informasi tentang penumpang kapal tersebut. Tugas Anda adalah mencoba menggambarkan beberapa grafik yang dapat membantu Anda dalam memahami karakteristik dataset tersebut.
Selain itu, Anda juga akan belajar untuk memanipulasi data dengan melakukan transformasi terhadap dataframe dengan menggunakan Pandas dan NumPy. Oleh karena itu, Anda diharapkan menguasai beberapa operasi mendasar pada dataframe yang dicontohkan dalam tugas ini. Anda bisa melihat deskripsi lengkapnya di sini.
Dalam proses data mining, ada beberapa istilah yang umum digunakan. Contohnya, kita menyebut variabel yang ada dalam dataset sebagai "atribut" atau "fitur", sementara variabel yang ingin diprediksi sebagai "kelas" atau "kategori". Dalam dataset Iris, atribut berarti sex, age, fare, embarked
, dsb.; sementara kelas berarti variabel survived
. Di sisi lain, objek, data point, atau instance berarti satu baris dalam dataset.
from matplotlib.mlab import bivariate_normal
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
%matplotlib inline
RANDOM_STATE = 1337
df = sns.load_dataset('titanic')
Laporkan deskripsi dari Titanic dataset dengan menggunakan metode dari Pandas!
# kode Anda di sini
Berapa jumlah masing-masing kelas dari dataset ini (i.e. berapa yang selamat dan berapa yang meninggal)?
# kode Anda di sini
Berapa jumlah objek dengan nilai age
yang hilang dalam dataset ini?
# kode Anda di sini
Kelompokkan data berdasarkan survived
, lalu hitung nilai rata-rata dan standar deviasi untuk age
dan fare
!
# kode Anda di sini
Terdapat beberapa atribut yang berulang atau sudah merupakan hasil olahan dalam dataset ini. Oleh karena itu, cobalah Anda buang atribut-atribut berikut:
class
who
adult_male
deck
embark_town
alive
alone
# kode Anda di sini
Terkadang, data yang kita terima memiliki jangkauan yang berbeda-beda di tiap atributnya. Buatlah dua atribut baru dari age
dan fare
dalam bentuk yang ternormalisasi. Nilai normal dapat dihitung sebagai:
$$
x'_i = \frac{x_i - \text{min}(\mathbf{x})}{\text{max}(\mathbf{x}) - \text{min}(\mathbf{x})}
$$
dengan $\mathbf{x}$ adalah vektor dari nilai suatu atribut dan $x_i$ adalah satu instance/objek yang ingin kita normalisasi. Simpan nilai age
dan fare
yang baru ini sebagai normalised_age
dan normalised_fare
dalam variabel df
.
Catatan: Abaikan nilai age
yang hilang!
# kode Anda di sini
Sekarang, kita ingin melihat apakah ada korelasi antara usia penumpang dengan harga tiketnya. Hipotesisnya, seharusnya orang dewasa akan membayar lebih mahal dibandingkan anak kecil. Untuk membuktikan korelasi ini, kita bisa menggunakan fungsi dari NumPy. Namun, beberapa nilai age
ternyata hilang (lihat kembali soal 1.3).
Tugas Anda adalah: ganti nilai yang hilang ini! Salah satu caranya adalah dengan nilai median dari age
yang tersedia, lalu menggunakan nilai tersebut sebagai pengganti nilai yang hilang.
# kode Anda di sini
Setelah nilai age
yang kosong tersebut diisi. Anda bisa menghitung nilai korelasinya dengan atribut fare
menggunakan fungsi numpy.corrcoef
. Perhatikan bahwa Anda mungkin perlu melakukan transpose terhadap irisan dari DataFrame yang Anda gunakan. Cetaklah hasil dari fungsi tersebut!
# kode Anda di sini
Lihat elemen ke $(1,2)$ atau $(2,1)$ dari matriks tersebut (catatan: secara matematis, indeks dimulai dari satu; dimensi matriks yang dihasilkan seharusnya $2 \times 2$), berapa nilainya?
Pembagian kategori nilai korelasi terkadang dilihat sebagai berikut (sumber):
Buatlah fungsi yang membuat pembagian tersebut, lalu evaluasi seberapa kuat korelasi antara age
dengan fare
?
# kode Anda di sini
Untuk memperjelas hubungannya secara visual, gambarkan scatter plot dengan sumbu $x$ adalah age
dan sumbu $y$ adalah fare
! Gunakan metode jointplot
dari pustaka seaborn
.
# kode Anda di sini
# kode Anda di sini
Gambarkan barplot dari kelas tiket (pclass
) untuk mengetahui dengan lebih baik distribusi atribut tersebut!
# kode Anda di sini
Anda ingin mengetahui dengan lebih jelas, apakah perempuan lebih didahulukan keselamatannya dibandingkan laki-laki. Untuk itu, gambarkan bar plot yang dibagi berdasarkan status survived
-nya dan bagi lagi masing-masing statusnya berdasarkan atribut sex
.
Petunjuk: Seharusnya Anda akan menghasilkan empat bars: survived male, survived female, dead male, dead female.
# kode Anda di sini
Kita ingin melihat korelasi dengan lebih jelas melalui bantuan visualisasi. Namun, ubahlah terlebih dahulu nilai sex
menjadi 1 untuk male dan 0 untuk female.
# kode Anda di sini
Hitunglah nilai korelasi dari kelima variabel berikut: survived
, pclass
, sex
, age
, dan fare
. Lalu, gambarkan heatmap-nya!
Catatan: Tuliskan nilai korelasinya dalam heatmap yang dihasilkan! Jangan lupa untuk mengganti label di sumbu x dan y dengan nama atribut yang digunakan
# kode Anda di sini
Pada bagian ini, Anda dibebaskan menggambarkan visualisasi yang menurut Anda menarik. Silakan bereksplorasi! Gambarkan dua plot atau lebih dari data yang sudah diberikan.
# koda Anda di sini