Sessi 8: Ujian Tengah Semester (UTS) - Praktikum Komprehensif
Fokus: Review, Kisi-kisi, dan Simulasi Studi Kasus Terintegrasi (Sessi 1-7). UTS akan dilaksanakan dalam bentuk praktik di Google Colaboratory.
Tujuan dan Format UTS
UTS bertujuan menguji kemampuan mahasiswa dalam menerapkan langkah-langkah awal *Data Science Pipeline* (Siklus CRISP-DM Tahap 1-3) secara praktis.
- Format: Praktikum 100% di Google Colaboratory.
- Materi yang Diuji: Sessi 1 (Konsep Dasar) hingga Sessi 7 (Dasar ML dan *Split* Data).
- Waktu: [Disesuaikan: e.g., 90 - 120 Menit].
- Output: File *.ipynb* yang telah selesai dikerjakan, diunggah ke *platform* yang ditentukan.
A. Kisi-Kisi UTS: Kemampuan yang Diuji (Sessi 1-7)
-
Setup dan *Load* Data (Sessi 1 & 2):
- Memahami konsep 5V Big Data dan Siklus Data Sains.
- Menggunakan Pandas (`pd.read_csv`, `pd.DataFrame`) dan NumPy.
- Memuat *dataset* dari *path* lokal (`/content/dataset.csv`) dan melakukan eksplorasi awal (`.shape`, `.info()`, `.head()`).
-
Data Wrangling & Preprocessing (Sessi 3 & 4):
- Mengidentifikasi dan menangani *Missing Values* (`.isnull()`, `.fillna()`).
- Melakukan Normalisasi (MinMax) dan Standardisasi (Z-Score) pada fitur numerik.
- Melakukan One-Hot Encoding pada variabel kategorikal.
-
Statistik Deskriptif (Sessi 5):
- Menghitung ukuran pemusatan (`.mean()`, `.median()`, `.mode()`).
- Menghitung ukuran penyebaran (`.std()`, `.var()`, IQR).
- Menghitung Korelasi Pearson (`.corr()`) antar fitur.
-
EDA dan Visualisasi (Sessi 6):
- Membuat Histogram untuk visualisasi distribusi.
- Membuat Box Plot untuk mendeteksi *outlier* dan membandingkan kelompok.
- Membuat Scatter Plot untuk memvisualisasikan hubungan linier atau non-linier.
-
Persiapan Pemodelan (Sessi 7):
- Mengidentifikasi masalah Regresi atau Klasifikasi.
- Melakukan Train-Test Split (`train_test_split`) dengan rasio yang tepat dan *random state* yang ditentukan.
B. Studi Kasus Simulasi UTS (Kode Terintegrasi)
Simulasi berikut menggabungkan seluruh langkah dari Sessi 2 hingga Sessi 7 dalam satu alur kerja menggunakan *dataset* fiktif yang membutuhkan pembersihan, statistik, visualisasi, dan persiapan *split*.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# --- TAHAP 1: LOAD DAN INSPEKSI DATA (Sessi 2) ---
print("--- TAHAP 1: LOAD DAN INSPEKSI ---")
# Asumsi data 'Pengukuran_Eksperimen.csv' sudah diunggah ke Colab
data = {
'Suhu_Awal': [20.5, 21.0, 22.1, 23.5, np.nan, 21.8, 20.9, 24.0, 25.5, 20.0],
'Tekanan': [101.3, 101.5, 101.4, 100.9, 101.0, 101.2, 101.6, 102.0, 100.0, 101.1],
'Status_Stabil': ['Ya', 'Tidak', 'Ya', 'Ya', 'Tidak', 'Ya', 'Tidak', 'Ya', 'Ya', 'Tidak'],
'Hasil_Ukur': [1.5, 1.8, 2.2, 1.4, 1.9, 2.5, 1.7, 2.1, 30.0, 1.6] # 30.0 adalah outlier
}
df = pd.DataFrame(data)
print(f"Bentuk Data Awal: {df.shape}")
print(df.isnull().sum()) # Cek Missing Values
# --- TAHAP 2: DATA WRANGLING (Sessi 3 & 4) ---
print("\n--- TAHAP 2: WRANGLING & PREPROCESSING ---")
# A. Penanganan Missing Value pada 'Suhu_Awal' (Imputasi dengan Median)
median_suhu = df['Suhu_Awal'].median()
df['Suhu_Awal'].fillna(median_suhu, inplace=True)
print(f"Missing Value Suhu_Awal diisi dengan Median: {median_suhu}")
# B. Penanganan Outlier pada 'Hasil_Ukur' (Nilai 30.0 diasumsikan salah ukur)
df.loc[df['Hasil_Ukur'] > 10, 'Hasil_Ukur'] = df['Hasil_Ukur'].median()
print("Outlier Hasil_Ukur (30.0) diganti dengan median kolom.")
# C. Encoding Variabel Kategorikal ('Status_Stabil' diubah menjadi 0 dan 1)
df['Status_Stabil_Encoded'] = df['Status_Stabil'].map({'Ya': 1, 'Tidak': 0})
df.drop('Status_Stabil', axis=1, inplace=True)
# D. Feature Scaling (Standardisasi Z-Score untuk Tekanan)
scaler = StandardScaler()
df['Tekanan_Standardized'] = scaler.fit_transform(df[['Tekanan']])
# --- TAHAP 3: STATISTIK & EDA (Sessi 5 & 6) ---
print("\n--- TAHAP 3: STATISTIK & EDA ---")
# A. Statistik Deskriptif (Sessi 5)
print("Statistik Hasil_Ukur:")
print(df['Hasil_Ukur'].describe().round(3))
# B. Korelasi (Sessi 5)
korelasi_suhu_hasil = df['Suhu_Awal'].corr(df['Hasil_Ukur'])
print(f"Korelasi Suhu vs Hasil_Ukur: {korelasi_suhu_hasil:.3f}")
# C. Visualisasi (Sessi 6 - Instruksi Visualisasi)
plt.figure(figsize=(10, 4))
sns.histplot(df['Suhu_Awal'], kde=True)
plt.title('Distribusi Suhu Awal (Hasil Setelah Imputasi)')
plt.show() # Di Colab, ini akan menampilkan plot
# --- TAHAP 4: PERSIAPAN ML (Sessi 7) ---
print("\n--- TAHAP 4: PERSIAPAN MACHINE LEARNING ---")
# Identifikasi X dan y (Prediksi Hasil_Ukur (Regresi) berdasarkan Suhu Awal)
X = df[['Suhu_Awal']]
y = df['Hasil_Ukur']
# Train-Test Split (Gunakan rasio 70/30)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1
)
print(f"Ukuran Data Training (70%): {len(X_train)}")
print(f"Ukuran Data Testing (30%): {len(X_test)}")
C. Tips dan Strategi Menghadapi UTS
- Fokus pada Alur: UTS akan menguji kemampuan Anda menghubungkan langkah-langkah secara sekuensial (Load → Clean → Transform → Split). Pastikan Anda tidak melewatkan tahap apapun.
- Reproducibility: Selalu gunakan `random_state` yang konsisten (e.g., `random_state=42` atau yang ditentukan) saat menggunakan fungsi `train_test_split` untuk memastikan hasil Anda konsisten.
- Interpretasi: Selain menjalankan kode, Anda mungkin diminta memberikan interpretasi singkat tentang hasil statistik (misalnya, "Apakah korelasi ini kuat? Apakah distribusi data terlihat normal?").
- Gunakan *Notebook* Referensi: Saat UTS, Anda diizinkan menggunakan *notebook* dari Sessi 1-7 sebagai referensi cepat untuk sintaksis kode.