Tugas 1 Praktikum Sains Data 2024 Genap: Regresi dan Clustering

Kembali ke Sains Data

Petunjuk Umum

  1. Kerjakan secara individu.

  2. Kerjakan tugas ini menggunakan bahasa pemrograman Python dengan file format berupa interactive Python notebook (yaitu file berbentuk .ipynb BUKAN .py), yang bisa dibuat misalnya menggunakan Jupyter Notebook atau Google Colaboratory.

  3. Harap sertakan penjelasan untuk setiap proses secara singkat di samping potongan kode (bisa dengan teks / text box maupun dengan comment, ‘#’).

  4. Format nama file untuk Tugas 1 adalah:

    Nama Lengkap_NPM_Kelas SIAK_Tugas1PrakSaindat.ipynb

    Contoh penamaan yang benar:

    Johann Carl Friedrich Gauss_2201234567_Kelas C_Tugas1PrakSaindat.ipynb

    Untuk mengumpulkan lebih dari satu file, gunakan .zip dengan format nama yang sama (dan file .ipynb yang di dalamnya juga masih menggunakan format nama yang sama).

  5. Apabila ada yang ingin direvisi setelah pengumpulan, lakukan pengumpulan ulang di Google Forms yang sama, tambahkan keterangan bahwa ada revisi, dan tambahkan kata “revisi” pada bagian akhir nama file, contohnya menjadi

    Johann Carl Friedrich Gauss_2201234567_Kelas C_Tugas1PrakSaindat_revisi.ipynb (atau .zip)

    Johann Carl Friedrich Gauss_2201234567_Kelas C_Tugas1PrakSaindat_revisi2.ipynb

    Johann Carl Friedrich Gauss_2201234567_Kelas C_Tugas1PrakSaindat_revisi3.ipynb

    (tentunya gunakan .zip kalau ada lebih dari satu file yang ingin dikumpulkan)

    (Revisi boleh dilakukan berkali-kali selama masa pengerjaan.)

  6. Pengumpulan tugas dilakukan ke Google Forms berikut ini, sesuai dengan kelas Anda di SIAK NG (link akan selalu sama untuk semua tugas praktikum Sains Data):

  7. Dengan durasi pengerjaan sekitar 2 (dua) minggu, tenggat waktu (deadline) pengumpulan Tugas 1 ini (termasuk revisi) adalah:

    Jumat, 24 Mei 2024, pukul 23.59 WIB.

    Mohon manfaatkan waktu Anda dengan baik (seperti mencicil pengerjaan, bahkan sudah selesai dari jauh-jauh hari) agar mengumpulkan tugas sebelum deadline. Keterlambatan pengumpulan bisa dikenakan pengurangan nilai atau bahkan dianggap tidak mengumpulkan, tergantung kesepakatan dari dosen. Meskipun demikian, lebih baik terlambat mengumpulkan daripada tidak mengumpulkan sama sekali.

  8. Sesuai standar Universitas Indonesia, plagiarisme dilarang keras dan bisa menyebabkan nilai tugas praktikum menjadi nol untuk semua pihak yang terlibat, tanpa peringatan apapun. Namun, Anda boleh memanfaatkan kode apapun yang ada di modul praktikum.

  9. Narahubung untuk Tugas 1 Praktikum Sains Data adalah:

    • Rifki - LINE: rifkyprakasya_

    • Bisma - LINE: bisma_joyosumarto

Soal

Tugas 1 ini terdiri dari soal a-j.

Ada dataset penjualan mobil, Car_sales.csv, yang bisa di-download dari salah satu sumber berikut:

Di dataset ini, fitur target yang ingin diprediksi adalah harga (Price_in_thousands). Perhatikan, fitur ini berupa harga, sehingga metode machine learning yang cocok untuk prediksi adalah metode regresi.

Lakukan end-to-end machine learning, atau lebih tepatnya end-to-end regression, yang meliputi:

  1. Langkah preprocessing yang sekiranya diperlukan: bisa meliputi seleksi fitur, imputasi, encoding, standarisasi, normalisasi, dsb. Berikan juga keterangan/penjelasan, mengapa Anda melakukan langkah preprocessing tersebut.

  2. EDA: cobalah menduga, kira-kira fitur/kolom/variabel apa saja yang memiliki hubungan yang erat atau menarik? Lakukan eksplorasi dengan membuat visualisasi dari fitur-fitur tersebut. Anda bebas membuat plot apa saja yang sekiranya cocok.

    Lalu, tuliskan penjelasan atau interpretasi Anda untuk tiap hasil visualisasi (misalnya dugaan Anda benar/salah, atau Anda memperoleh informasi/insight baru dari visualisasi tersebut).

  3. Lakukan train-test-split (rasionya bebas, misal 80:20). Jangan lupa gunakan suatu random_state.

  4. Training: menggunakan scikit-learn (sklearn), buatlah suatu model regresi linier sederhana dan suatu model regresi linier berganda. Kemudian, tampilkan (boleh secara pemrograman maupun manual) koefisien-koefisien yang diperoleh dalam bentuk rumus umum regresi, yaitu (masukkan nilai-nilai \(\beta\) yang sesuai):

\[y = \beta_0 + \beta_1 x\]

(untuk regresi linier sederhana), dan

\[y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots\]

(untuk regresi linier berganda)
  1. Evaluasi model regresi: untuk model-model regresi yang telah Anda buat, (menggunakan scikit-learn) hitunglah metrik evaluasi untuk regresi, seperti MSE (mean squared error) atau \(R^2\). Berikan kesimpulan, apakah model regresi yang telah Anda buat sudah cukup baik.

Kemudian, siapa tahu, dataset yang sedang digunakan terdiri dari sejumlah cluster. Untuk mencari tahu, lakukan end-to-end clustering, yang meliputi (tahap preprocessing dan EDA dilewatkan karena sudah dilakukan di atas):

  1. Pilih suatu bilangan bulat positif \(k\), lalu buatlah model k-means clustering (menggunakan scikit-learn) dengan banyaknya cluster sesuai nilai \(k\) yang Anda pilih.

  2. Evaluasi model clustering: untuk model k-means clustering tersebut, tampilkan metrik evaluasi untuk clustering, misalnya SSE.

  3. Hyperparameter tuning: gunakan grid search untuk mencoba beberapa nilai \(k\) untuk k-means clustering dan memperoleh nilai \(k\) yang terbaik. Alternatif lain, Anda diperbolehkan untuk melakukan hyperparameter tuning dengan cara looping untuk mencoba beberapa nilai \(k\).

  4. Perolehlah data cluster untuk tiap titik (tiap baris) dari model k-means clustering dengan nilai \(k\) terbaik tersebut.

  5. Simpan hasil prediksi cluster untuk tiap baris sebagai fitur/kolom baru (misal beranma cluster) dalam pandas DataFrame, lalu simpan DataFrame tersebut sebagai CSV bernama tugas1_clusters.csv