Sessi 14: Studi Kasus Komprehensif dan Proposal Proyek Akhir
Fokus: Penerapan seluruh alur Data Science Pipeline (dari Sessi 1 hingga Sessi 13) secara terintegrasi melalui Capstone Project. Pembahasan kriteria pemilihan *dataset*, perumusan masalah, dan penyusunan proposal proyek.
A. Integrasi Data Science Pipeline
Proyek akhir adalah kesempatan untuk menerapkan siklus Data Science secara penuh. Tidak ada lagi pengerjaan per modul; mahasiswa harus mengintegrasikan semua tahapan dengan lancar.
1. Lima Tahapan Kunci Proyek
- Perumusan Masalah: Mendefinisikan pertanyaan yang jelas (Klasifikasi atau Regresi?).
Contoh: Bisakah kita memprediksi kualitas air (*kontinu/regresi*) dari data sensor lingkungan?
- Data Acquisition & Wrangling (Sessi 2-4): Memuat data, mengatasi *missing values*, *outliers*, dan melakukan Normalisasi atau Standardisasi.
- Exploratory Data Analysis (Sessi 5-6): Menggunakan statistik dan visualisasi untuk memahami distribusi dan korelasi antar fitur.
- Pemodelan (Sessi 9-12): Memilih dan melatih model (misalnya, Regresi Logistik untuk klasifikasi kualitas, atau Decision Tree), dan fine-tuning parameter.
- Evaluasi & Interpretasi (Sessi 9 & 11): Menilai kinerja model menggunakan metrik yang sesuai (R2, RMSE, Presisi, Recall, F1-Score) dan memberikan kesimpulan berdasarkan temuan data.
B. Pemilihan Dataset untuk Proyek Akhir
Pemilihan *dataset* yang tepat menentukan kompleksitas dan nilai ilmiah dari proyek. Dataset harus memiliki Volume dan Variety yang memadai.
1. Kriteria Pemilihan Dataset
- Relevansi Ilmiah: Diutamakan data yang berhubungan dengan Fisika (sensor, astronomi, energi, material) atau Matematika (finansial, stokastik).
- Skala Data: Harus cukup besar (minimal ratusan atau ribuan baris) agar efek Big Data dapat dirasakan.
- Masalah Jelas: Harus memiliki variabel target yang jelas (y) untuk diprediksi (misalnya, harga, diagnosis, atau kelas benda langit).
2. Contoh Dataset Ideal (UCI/Kaggle)
- Klasifikasi: Pima Indians Diabetes Dataset (UCI), Breast Cancer Wisconsin (Diagnostic) Dataset (UCI), atau Human Activity Recognition (HAR) (Kaggle/UCI).
- Regresi: Concrete Compressive Strength Dataset (UCI), Boston Housing Dataset (Regresi Harga), atau Energy Efficiency Dataset (UCI).
C. Struktur Proposal Proyek Akhir (Wajib)
Proposal adalah dokumen perencanaan yang memastikan kelompok memiliki pemahaman yang jelas tentang tujuan dan metodologi.
-
Judul Proyek: Harus spesifik dan mencerminkan masalah yang dipecahkan.
Contoh: Klasifikasi Kualitas Air Minum Berdasarkan Parameter Fisika-Kimia Menggunakan Regresi Logistik.
-
Latar Belakang dan Rumusan Masalah:
Jelaskan mengapa masalah ini penting (konteks ilmiah/sosial) dan rumuskan pertanyaan kunci: "Apa yang ingin diprediksi atau dianalisis?".
-
Deskripsi Dataset:
Sumber data (UCI/Kaggle), jumlah baris/kolom, dan variabel kunci yang akan digunakan (Fitur X dan Target y).
-
Metodologi (Pipeline):
Rencanakan langkah-langkah teknis. Sebutkan secara spesifik: Teknik *Wrangling* (e.g., imputasi mean), Teknik *Scaling* (Normalisasi Z-Score), Model ML yang akan dicoba (e.g., Decision Tree), dan Metrik Evaluasi (e.g., F1-Score).
-
Jadwal Kerja:
Pembagian tugas antar anggota kelompok untuk Sessi 14 dan Sessi 15.
D. Studi Kasus Kode: Mempersiapkan Pipeline (Pre-Project)
Kode berikut menunjukkan bagaimana seluruh tahapan yang dipelajari (Normalisasi, Split, Pemodelan, Evaluasi) disatukan dalam satu *pipeline* yang efisien.
Dataset: Wine Quality (UCI) - Klasifikasi Biner Kualitas
Tujuan: Mengklasifikasikan anggur menjadi kualitas baik (1) atau kualitas buruk (0) berdasarkan fitur fisika-kimia. Kita definisikan kualitas baik jika skor > 6.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, accuracy_score
import numpy as np
# ASUMSI: File 'winequality-red.csv' sudah diunggah ke Google Colab
# Data ini memiliki fitur fisika-kimia (fixed acidity, pH, alcohol, dll.) dan target 'quality'.
# Data dapat diunduh dari UCI atau Kaggle.
try:
df = pd.read_csv('winequality-red.csv', sep=';')
except FileNotFoundError:
print("Pastikan file 'winequality-red.csv' sudah diunggah ke Colab.")
# Membuat data dummy jika file tidak ditemukan
df = pd.DataFrame(np.random.rand(100, 12), columns=[f'fitur{i}' for i in range(11)] + ['quality'])
df['quality'] = np.random.randint(3, 9, 100) # Skor 3 hingga 8
# --- 1. DEFINISI MASALAH (Klasifikasi Biner) ---
# Ubah kualitas menjadi target biner: 1 (Baik) jika quality >= 7, 0 (Buruk) jika quality < 7
df['target'] = np.where(df['quality'] >= 7, 1, 0)
X = df.drop(['quality', 'target'], axis=1)
y = df['target']
# --- 2. WRANGLING DAN SCALING ---
# Split Data
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
# Standardisasi (Z-Score) - Wajib untuk Regresi Logistik
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# --- 3. PEMODELAN ---
model = LogisticRegression(random_state=42)
model.fit(X_train_scaled, y_train)
y_pred = model.predict(X_test_scaled)
# --- 4. EVALUASI DAN INTERPRETASI ---
acc = accuracy_score(y_test, y_pred)
print("-------------------------------------------------")
print("HASIL ANALISIS KUALITAS WINE (LOGISTIC REGRESSION)")
print(f"Akurasi Model: {acc:.4f}")
print("Classification Report:")
print(classification_report(y_test, y_pred))
print("-------------------------------------------------")
print("Interpretasi: Fokus pada 'Recall' untuk kelas 1 (Wine Baik) untuk memastikan")
print("bahwa kita tidak salah mengklasifikasikan wine baik sebagai wine buruk (FN rendah).")