Praktikum Kecerdasan Buatan

Sistem Deteksi Stunting Balita
Berbasis Web menggunakan KNN

Aplikasi web ini mengimplementasikan algoritma K-Nearest Neighbors (KNN) untuk mendeteksi status gizi balita. Dibangun dengan Flask (Python), dataset dari Kaggle, dan antarmuka Bootstrap 5 yang responsif.

97.5%Akurasi Model
K = 4K Optimal
10KData Training
4Kelas Label
Deteksi Stunting
Fitur Utama Aplikasi
Dashboard Informatif

Statistik model, distribusi kelas, cara kerja KNN, dan 2 chart interaktif.

Prediksi Stunting

Form input dengan validasi JavaScript dan Python, prediksi real-time menggunakan model KNN.

Eksplorasi Dataset

Preview 100 baris acak berimbang, statistik deskriptif, filter interaktif per label dan gender.

Visualisasi Data (6 Chart)

Donut, bar grouped/stacked, scatter plot, histogram interaktif, lengkap dengan interpretasi.

Mobile Responsive

Sidebar collapsible, layout Bootstrap 5 menyesuaikan semua ukuran layar.

Spesifikasi Teknis
BackendPython Flask 3.0
FrontendBootstrap 5.3
Algoritma MLKNN (scikit-learn)
DatasetKaggle 121K rows
PreprocessingLabelEncoding + MinMaxScaler
K OptimalK = 4 (loop K=1 sampai 20)
Akurasi97.5% (data testing 20%)
Split Data80% training / 20% testing
VisualisasiChart.js 4.4
Teori Algoritma K-Nearest Neighbors (KNN)
Apa itu KNN?

K-Nearest Neighbors (KNN) adalah algoritma instance-based learning yang melakukan klasifikasi berdasarkan kedekatan data baru dengan data training yang sudah ada. KNN tidak membangun model eksplisit saat training karena ia menyimpan semua data training dan melakukan komputasi saat prediksi (lazy learner).

Keunggulan KNN
  • Sederhana dan mudah dipahami
  • Tidak membutuhkan proses training yang kompleks
  • Efektif untuk data non-linear
  • Dapat digunakan untuk klasifikasi maupun regresi
Kelemahan KNN
  • Lambat pada dataset besar (hitung jarak ke semua titik)
  • Sensitif terhadap skala fitur (perlu normalisasi)
  • Bergantung pada pemilihan nilai K
  • Sensitif terhadap outlier dan data tidak relevan
Formula Matematika

1. Jarak Euclidean (digunakan dalam sistem ini):

d(x, y) = √ Σ⊂i (x⊂i − y⊂i)²

2. Jarak Manhattan:

d(x, y) = Σ⊂i |x⊂i − y⊂i|

3. Normalisasi MinMaxScaler:

x' = (x − x_min) / (x_max − x_min)
Langkah-langkah KNN
  1. Tentukan nilai K (jumlah tetangga)
  2. Normalisasi semua fitur dengan MinMaxScaler
  3. Hitung jarak Euclidean ke semua data training
  4. Urutkan data berdasarkan jarak terkecil
  5. Ambil K data dengan jarak terkecil (tetangga)
  6. Voting mayoritas: kelas dengan suara terbanyak jadi hasil prediksi
Confusion Matrix Model KNN
Akurasi: 97.5%

Confusion Matrix adalah tabel yang digunakan untuk mengevaluasi performa model klasifikasi. Setiap baris mewakili kelas aktual (data nyata), sedangkan setiap kolom mewakili kelas prediksi (hasil model KNN).

Kotak hijau pada diagonal menunjukkan prediksi yang benar (True Positive), sedangkan kotak oranye menunjukkan prediksi yang salah (misklasifikasi). Semakin banyak nilai di diagonal hijau dan semakin kecil nilai di kotak oranye, semakin baik performa model. Model ini diuji pada 2.000 baris data testing dengan hasil akurasi 97.5%.

PREDIKSI MODEL
Sev.Stunted Stunted Normal Tinggi
AKTUAL Sev.Stunted 492 8 0 0
AKTUAL Tinggi 10 490 0 0
AKTUAL Tinggi 0 22 471 7
AKTUAL Tinggi 0 0 3 497
Prediksi Benar (TP)
Prediksi Salah
Ringkasan Performa per Kelas
Severely Stunted 98.0%
Prediksi benar: 492 dari 502 prediksi kelas ini
Stunted 94.2%
Prediksi benar: 490 dari 520 prediksi kelas ini
Normal 99.4%
Prediksi benar: 471 dari 474 prediksi kelas ini
Tinggi 98.6%
Prediksi benar: 497 dari 504 prediksi kelas ini
Akurasi Keseluruhan
97.5%
dari total 2.000 data testing
Referensi dan Sumber
Dataset

Stunting Toddler (Balita) Detection - 121K rows.
Sumber: Kaggle, dataset pertumbuhan balita Indonesia.

Standar WHO

WHO Child Growth Standards - kurva pertumbuhan tinggi badan balita berdasarkan usia dan jenis kelamin.

Buka Kurva Tinggi WHO
Algoritma

Cover, T. dan Hart, P. (1967).
"Nearest Neighbor Pattern Classification."
IEEE Transactions on Information Theory.

Library yang Digunakan

Flask 3.0
scikit-learn 1.3
pandas 2.1
numpy 1.26
Chart.js 4.4
Bootstrap 5.3