itsprzvl/hortikultura-randomforest
0
Sistem Rekomendasi Varietas Tanaman Hortikultura
Algoritma: Random Forest Classifier Objektif: Merekomendasikan varietas tanaman hortikultura terbaik berdasarkan analisis geografis (klasifikasi kecamatan) dan kemiripan kondisi lingkungan (pH Tanah, Suhu, Curah Hujan, Elevasi).
Fitur Utama
- Prediksi Kecamatan: Mengidentifikasi kecamatan terdekat berdasarkan kondisi lingkungan menggunakan Random Forest dengan akurasi 100%
- Rekomendasi Hibrida: Menggabungkan 60% bobot geografis model + 40% kemiripan karakteristik iklim
- Multiple Komoditas: Merekomendasikan varietas terbaik untuk 10 jenis tanaman hortikultura:
- Bayam, Cabe Besar, Cabe Keriting, Cabe Rawit
- Kacang Panjang, Kangkung, Ketimun
- Semangka, Terung, Tomat
Dataset & Pelatihan
- Total Data Training: 810 baris × 7 kolom
- Data Split: 80% training (648 baris), 20% testing (162 baris)
- Teknik Imputasi: Median global untuk missing values (Suhu_C)
- Cross Validation: 5-Fold Stratified K-Fold (100% akurasi rata-rata)
Fitur Input
- pH Tanah: Range 5.17 - 7.35
- Suhu (°C): Range 21.3 - 29.0
- Curah Hujan (mm): Range 1408.9 - 2403.7
- Elevasi (m dpl): Range 3.6 - 255.0
Cara Penggunaan
Requirements
pandas
scikit-learn
joblib
numpy
fastapi
pydantic
uvicornInstalasi
pip install -r requirements.txtMenjalankan Aplikasi
python -m uvicorn app:app --host 0.0.0.0 --port 7860Akses aplikasi di http://localhost:7860
Struktur Folder
├── data2/ # Dataset preprocessed
│ └── dataset_training_random_forest_generated.csv
├── models/ # Model & encoder yang sudah dilatih
│ ├── random_forest_model.joblib
│ ├── le_kecamatan.joblib
│ ├── le_tanaman.joblib
│ └── le_varietas.joblib
├── src/ # Source code
├── ui/ # Frontend interface
├── Random_Forest_Plant_Recommendation_Revamped.ipynb # Notebook training
└── app.py # FastAPI applicationPipeline Machine Learning
- Pemisahan Fitur & Target
- Imputasi Nilai Hilang (Median pada Suhu_C)
- Encoding Data Kategorikal (Label Encoding)
- Split Data Train-Test (80/20 Stratified)
- Pelatihan Model Random Forest (100 trees)
- Evaluasi & Classification Report
- Uji Stabilitas (Stratified K-Fold Cross Validation)
- Feature Importance Analysis
- Hybrid Blended Recommendation System
Feature Importance
Kontribusi relatif fitur lingkungan terhadap penentuan lokasi (kecamatan):
- Curah Hujan (Rainfall)
- Elevasi (Elevation)
- Suhu (Temperature)
- pH Tanah (Soil pH)
Metrik Performa
API Reference
Endpoint utama untuk prediksi dan rekomendasi:
POST /predictInput:
{
"ph_tanah": 6.46,
"suhu_c": 24.2,
"curah_hujan_mm": 1763,
"elevasi_mdpl": 255
}Output:
{
"kecamatan_terdekat": "Dewantara",
"tingkat_keyakinan": 0.19,
"rekomendasi": [
{
"nama_tanaman": "Bayam",
"nama_varietas": "Bangkok",
"kecocokan": 0.7518
},
...
]
}Teknologi
- Framework: FastAPI
- ML Library: scikit-learn
- Data Processing: pandas, numpy
- Serialization: joblib
- Validation: pydantic
Lisensi
MIT License
Author
Ririn (SKRIPSI/Thesis Project)
Check out the HuggingFace Spaces documentation at https://huggingface.co/docs/hub/spaces-config-reference
