CoolFace
Apppublic

itsprzvl/hortikultura-randomforest

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes
App README

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
uvicorn

Instalasi

bash
pip install -r requirements.txt

Menjalankan Aplikasi

bash
python -m uvicorn app:app --host 0.0.0.0 --port 7860

Akses 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 application

Pipeline Machine Learning

  1. 1.Pemisahan Fitur & Target
  2. 2.Imputasi Nilai Hilang (Median pada Suhu_C)
  3. 3.Encoding Data Kategorikal (Label Encoding)
  4. 4.Split Data Train-Test (80/20 Stratified)
  5. 5.Pelatihan Model Random Forest (100 trees)
  6. 6.Evaluasi & Classification Report
  7. 7.Uji Stabilitas (Stratified K-Fold Cross Validation)
  8. 8.Feature Importance Analysis
  9. 9.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

MetrikNilai
Akurasi Test Set100.00%
Mean Cross-Validation100.00%
Std Dev Cross-Validation0.0000
Total Features4
Total Classes (Kecamatan)27

API Reference

Endpoint utama untuk prediksi dan rekomendasi:

POST /predict

Input:

json
{
  "ph_tanah": 6.46,
  "suhu_c": 24.2,
  "curah_hujan_mm": 1763,
  "elevasi_mdpl": 255
}

Output:

json
{
  "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