https://github.com/mkaspulanwar/p7_bigdata_machine_learning
Praktikum Big Data Week 7: Implementasi Machine Learning menggunakan Random Forest untuk prediksi traffic Smart City AI dengan pipeline data terintegrasi dan dashboard interaktif berbasis Streamlit.
https://github.com/mkaspulanwar/p7_bigdata_machine_learning
big-data data-pipeline random-forest streamlit time-series traffic-prediction
Last synced: 2 months ago
JSON representation
Praktikum Big Data Week 7: Implementasi Machine Learning menggunakan Random Forest untuk prediksi traffic Smart City AI dengan pipeline data terintegrasi dan dashboard interaktif berbasis Streamlit.
- Host: GitHub
- URL: https://github.com/mkaspulanwar/p7_bigdata_machine_learning
- Owner: mkaspulanwar
- License: mit
- Created: 2026-04-13T01:04:16.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-13T03:05:55.000Z (2 months ago)
- Last Synced: 2026-04-13T03:23:37.095Z (2 months ago)
- Topics: big-data, data-pipeline, random-forest, streamlit, time-series, traffic-prediction
- Language: Python
- Homepage:
- Size: 506 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Praktikum Big Data Week 7: Machine Learning untuk Prediksi Traffic (Smart City AI)






## Tim Praktikum
| Peran | Nama | NIM | Profil GitHub |
| :--- | :--- | :--- | :--- |
| **Pengembang Proyek** | M. Kaspul Anwar | 230104040212 | [](https://github.com/mkaspulanwar) |
| **Dosen Pengampu** | Muhayat, M. IT | - | [](https://github.com/muhayat-lab) |
---
## Ringkasan Praktikum Week 7
Praktikum Week 7 berfokus pada implementasi **Machine Learning untuk Prediksi Traffic Smart City** sebagai kelanjutan dari Week 6 (real-time analytics dan visualisasi skala besar).
Pada Week 6, sistem sudah mampu melakukan ingestion, processing, dan visualisasi data transportation secara near real-time. Pada Week 7, proyek diperluas dengan lapisan **predictive analytics** untuk memprediksi kepadatan traffic menggunakan model machine learning.
## Tujuan Praktikum
1. Menyiapkan data traffic agar layak untuk training model.
2. Membangun baseline model regresi untuk memprediksi jumlah kendaraan.
3. Mengintegrasikan model ke dashboard interaktif untuk inferensi cepat.
4. Mendokumentasikan alur end-to-end dari data mentah sampai prediksi.
5. Menjaga kesinambungan arsitektur Week 6 ke Week 7.
## Cakupan Fitur Week 7
1. **Data cleaning pipeline** untuk dataset traffic smart city.
2. **Feature engineering berbasis waktu** (`hour`, `day`) dan fitur historis (`lag1`).
3. **Model training** menggunakan `RandomForestRegressor`.
4. **Model persistence** ke artifact `models/traffic_model_v1.pkl`.
5. **Dashboard prediksi** berbasis Streamlit untuk eksplorasi metrik dan simulasi prediksi.
## Arsitektur Sistem (Week 6 -> Week 7)
```mermaid
flowchart LR
A["Raw Traffic Dataset CSV"] --> B["Data Cleaning (Pandas)"]
B --> C["Clean Dataset (CSV)"]
C --> D["Feature Engineering (hour, day, lag1)"]
D --> E["Model Training (RandomForestRegressor)"]
E --> F["Model Artifact (.pkl)"]
C --> G["Traffic Dashboard (Streamlit)"]
F --> G
G --> H["Interactive Prediction & Monitoring"]
I["Week 6 Transportation Streaming"] --> G
```
## Struktur Project (Terbaru)
```bash
bigdata-project/
├── .venv/ # Virtual environment lokal
├── alerts/ # Modul alert untuk use case transportation
│ ├── __init__.py
│ └── transportation_alert.py # Rule-based alert (traffic/fare)
├── analytics/ # Modul analytics & machine learning
│ ├── __init__.py
│ ├── transportation_analytics.py # KPI, trend, anomaly detection (Week 6)
│ └── traffic_ml_model_v1.py # Training model prediksi traffic (Week 7)
├── dashboard/ # Aplikasi dashboard Streamlit
│ ├── dashboard_streamlit.py # Dashboard real-time e-commerce
│ ├── dashboard_transportation.py # Dashboard decision-oriented transportation
│ └── traffic_dashboard_v1.py # Dashboard prediksi traffic (Week 7)
├── data/
│ ├── checkpoints/ # Spark streaming checkpoint
│ │ └── transportation/
│ ├── clean/ # Data hasil cleaning
│ │ └── traffic_smartcity_clean_v1.csv
│ ├── curated/ # Data agregasi bisnis (Week 6)
│ ├── raw/
│ │ ├── ecommerce_raw.csv # Dataset mentah utama batch
│ │ └── traffic_smartcity_v1.csv # Dataset traffic smart city (Week 7)
│ └── serving/ # Data siap konsumsi dashboard
│ ├── avg_transaction/
│ ├── category_revenue/
│ ├── stream/ # Output streaming e-commerce
│ ├── top_products/
│ ├── total_revenue/
│ └── transportation/ # Output streaming transportation
├── logs/
│ ├── batch_pipeline.log # Log proses batch pipeline
│ └── stream_checkpoint/ # Checkpoint streaming e-commerce
├── models/
│ └── traffic_model_v1.pkl # Artifact model prediksi traffic (Week 7)
├── screenshots/ # Screenshot dokumentasi hasil praktikum
│ ├── struktur_project.png
│ ├── scripts_cleaning.png
│ ├── data_cleaning_selesai.png
│ ├── scripts_modeling.png
│ ├── model_berhasil_disimpan.png
│ ├── scripts_dashboard.png
│ ├── dashboard_berjalan.png
│ ├── dashboard_1.png
│ ├── dashboard_2.png
│ └── nilai_prediksi.png
├── scripts/ # Pipeline utama praktikum
│ ├── analytics_layer.py # Analytics + serving layer (e-commerce)
│ ├── batch_pipeline_enterprise.py # Batch processing pipeline
│ ├── streaming_layer.py # Streaming ingestion e-commerce
│ ├── transaction_generator.py # Generator transaksi e-commerce
│ ├── traffic_data_cleaning_v1.py # Data cleaning traffic (Week 7)
│ └── transportation/
│ ├── streaming_trip_layer.py # Streaming ingestion transportation
│ └── trip_generator.py # Generator trip transportation
├── stream_data/ # Input simulasi data streaming
│ └── transportation/
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
└── README.md
```
## Bukti Screenshots
Struktur Project
Scripts Cleaning

Data Cleaning Selesai
Scripts Modeling

Model Berhasil Disimpan
Scripts Dashboard

Dashboard Berjalan
Dashboard 1

Dashboard 2
Nilai Prediksi

## Dataset Week 7
Sumber dataset utama berada di:
- `data/raw/traffic_smartcity_v1.csv`
Ringkasan data:
1. Jumlah baris: **168 records**.
2. Rentang waktu: **2025-01-01 00:00:00 sampai 2025-01-07 23:00:00**.
3. Frekuensi: **per jam (hourly)**.
Skema kolom:
| Kolom | Tipe | Deskripsi |
| :--- | :--- | :--- |
| `datetime` | datetime | Timestamp observasi traffic |
| `traffic` | int/float | Jumlah kendaraan pada timestamp tersebut |
## Penjelasan Alur Week 7 (End-to-End)
### 1) Data Cleaning
Script: `scripts/traffic_data_cleaning_v1.py`
Proses utama:
1. Membaca data mentah dari `data/raw/traffic_smartcity_v1.csv`.
2. Parsing kolom `datetime` menjadi tipe waktu.
3. Sort data berdasarkan waktu.
4. Menghapus baris bernilai null (`dropna`).
5. Menyimpan output ke `data/clean/traffic_smartcity_clean_v1.csv`.
Jalankan:
```bash
python scripts/traffic_data_cleaning_v1.py
```
### 2) Modeling Machine Learning
Script: `analytics/traffic_ml_model_v1.py`
Proses utama:
1. Membaca data bersih.
2. Membuat fitur turunan:
- `hour` = jam (0-23)
- `day` = indeks hari (0-6)
- `lag1` = traffic satu periode sebelumnya
3. Menentukan target `y = traffic`.
4. Training model `RandomForestRegressor` (baseline).
5. Menyimpan model ke `models/traffic_model_v1.pkl`.
Jalankan:
```bash
python analytics/traffic_ml_model_v1.py
```
### 3) Dashboard Prediksi
Script: `dashboard/traffic_dashboard_v1.py`
Fitur dashboard:
1. Menampilkan KPI sederhana (`Avg Traffic`, `Max Traffic`).
2. Menampilkan grafik trend traffic.
3. Menyediakan input interaktif (`hour`, `day`, `lag1`) untuk simulasi prediksi.
4. Menampilkan output prediksi jumlah kendaraan.
Jalankan:
```bash
streamlit run dashboard/traffic_dashboard_v1.py
```
## Setup Environment
### 1) Prasyarat
1. Python 3.10+ (disarankan 3.12).
2. Pip dan virtual environment.
3. Java (opsional, jika juga menjalankan pipeline Spark Week 6).
### 2) Membuat Virtual Environment
Linux/macOS:
```bash
python -m venv .venv
source .venv/bin/activate
```
PowerShell:
```powershell
python -m venv .venv
.venv\Scripts\Activate.ps1
```
### 3) Install Dependency
```bash
pip install pandas scikit-learn joblib streamlit matplotlib pyspark pyarrow
```
## Quick Run (Rekomendasi Praktikum 7)
Jalankan berurutan dari root project:
```bash
python scripts/traffic_data_cleaning_v1.py
python analytics/traffic_ml_model_v1.py
streamlit run dashboard/traffic_dashboard_v1.py
```
## Validasi Keberhasilan
Praktikum dianggap berhasil jika:
1. File `data/clean/traffic_smartcity_clean_v1.csv` terbentuk setelah cleaning.
2. File `models/traffic_model_v1.pkl` terbentuk setelah training.
3. Dashboard terbuka tanpa error dan menampilkan metrik serta grafik trend.
4. Tombol prediksi menghasilkan nilai prediksi kendaraan dari input pengguna.
## Integrasi Dengan Praktikum 6
Komponen Week 6 tetap dipertahankan di repo (streaming transportation, analytics, alert, dan dashboard). Dengan demikian, repository ini sekarang mencakup dua spektrum analitik:
1. **Descriptive + Real-Time Analytics** (Week 6).
2. **Predictive Analytics (Machine Learning)** (Week 7).
Pendekatan ini merepresentasikan alur smart city data platform yang lebih lengkap: dari observasi traffic hingga prediksi traffic.
## Troubleshooting
1. Jika error `No module named ...`, pastikan virtual environment aktif dan dependency sudah terinstall.
2. Jika model tidak ditemukan di dashboard, jalankan ulang script training model.
3. Jika data bersih tidak ditemukan, jalankan ulang script cleaning.
4. Jika tampilan dashboard kosong, pastikan file `data/clean/traffic_smartcity_clean_v1.csv` berisi data valid.
## Keterbatasan Baseline Saat Ini
1. Model belum menggunakan train/test split dan evaluasi metrik formal (MAE/RMSE/R2).
2. Fitur masih sederhana (`hour`, `day`, `lag1`) dan belum mencakup cuaca/event kota.
3. Belum ada retraining otomatis periodik.
## Rencana Pengembangan Lanjutan
1. Menambahkan evaluasi model terukur (MAE, RMSE, R2) dan visual error analysis.
2. Menambahkan fitur eksternal (cuaca, hari libur, event, kepadatan area).
3. Menyusun pipeline retraining terjadwal dan versioning model.
4. Integrasi prediksi ke layer alert real-time untuk proactive traffic management.
## Penutup
Week 7 berhasil memperluas fondasi Week 6 dari sekadar monitoring real-time menjadi sistem yang mulai memiliki kemampuan prediktif. Hasilnya, repository ini kini lebih siap digunakan sebagai prototipe **Smart City AI** yang menggabungkan ingestion, analytics, visualisasi, dan prediksi traffic dalam satu alur terpadu.