Deskripsi Proyek
Proyek ini bertujuan untuk membangun model machine learning yang dapat memprediksi performa akademik siswa dalam tiga bidang utama: matematika, membaca, dan menulis. Analisis ini memanfaatkan data demografis dan latar belakang siswa untuk mengidentifikasi faktor-faktor kunci yang memengaruhi hasil belajar. Proyek ini menggunakan pendekatan supervised learning, khususnya model regresi, untuk memprediksi skor siswa secara akurat.
Bahasa & Library
Python, Pandas
Sumber Dataset
Student Study Performance (Kaggle)
Alur Kerja Proyek
Pemahaman Data
Memuat dataset dan melakukan eksplorasi awal untuk memahami struktur dan statistik data.
Pra-pemrosesan
Membersihkan data, menangani nilai yang hilang, dan mengubah variabel kategorikal menjadi numerik.
Pemilihan Model
Memilih model RandomForestRegressor karena kemampuannya menangani hubungan non-linear.
Pelatihan Model
Membagi data menjadi data latih (80%) dan data uji (20%), lalu melatih model.
Evaluasi Model
Mengevaluasi kinerja model menggunakan metrik Mean Squared Error (MSE) dan R2 score.
Interpretasi
Menganalisis feature importances untuk mengidentifikasi faktor paling berpengaruh.
Implementasi & Potongan Kode
1. Memuat dan Mengeksplorasi Data
import pandas as pd
# Memuat dataset
df = pd.read_csv('study_performance.csv')
# Menampilkan informasi dasar dan statistik
print("DataFrame Info:")
df.info()
print("\nDescriptive statistics for numerical columns:")
display(df.describe())
2. Pra-pemrosesan Data (One-Hot Encoding)
# One-hot encode kolom kategorikal
df_encoded = pd.get_dummies(df, columns=[
'gender',
'race/ethnicity',
'parental level of education',
'lunch',
'test preparation course'
])
print("\nEncoded DataFrame:")
display(df_encoded.head())
3. Pelatihan Model RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
# Memisahkan fitur (X) dan target (y)
X = df_encoded.drop(columns=['math score', 'reading score', 'writing score'])
y = df_encoded[['math score', 'reading score', 'writing score']]
# Membagi data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Melatih model
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)
Evaluasi Model
Kinerja model dievaluasi pada data uji. Namun, karena kendala dalam memuat dataset asli, evaluasi dilakukan pada dummy dataset yang kecil dan tidak representatif, sehingga menghasilkan performa yang buruk.
MSE (Mean Squared Error)
377.72
(Semakin rendah semakin baik)
R² Score
-11.40
(Nilai negatif menandakan performa sangat buruk)
Refleksi dan Rekomendasi
Refleksi: Proyek ini berhasil mendemonstrasikan alur kerja analisis data yang lengkap. Namun, kendala utama adalah kegagalan memuat dataset asli, yang memaksa penggunaan data tiruan. Akibatnya, hasil evaluasi model tidak valid dan tidak mencerminkan kemampuan prediksi yang sebenarnya.
Saran Lanjutan:
- Gunakan Dataset Asli: Langkah terpenting adalah memastikan dataset `study_performance.csv` dapat diakses dan dimuat dengan benar untuk membangun model yang valid.
- Rekayasa Fitur (Feature Engineering): Buat fitur baru, seperti skor rata-rata atau interaksi antar fitur, untuk meningkatkan daya prediksi model.
- Eksplorasi Model Lain: Coba model regresi lain seperti Gradient Boosting atau Support Vector Regression untuk membandingkan performa.