Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistem Rekomendasi Tanaman

Aplikasi web inference-only yang memprediksi tanaman paling cocok untuk suatu lahan berdasarkan parameter tanah dan lingkungan, serta menjelaskan mengapa menggunakan SHAP dan penjelasan berbahasa Indonesia (NLG).

Dibangun dengan Streamlit, XGBoost, dan SHAP.


Teks Alternatif

📋 Daftar Isi


Gambaran Umum

Diberikan tujuh input tanah/lingkungan:

  • N — Nitrogen
  • P — Fosfor
  • K — Kalium
  • Suhu (°C)
  • Kelembapan (%)
  • pH
  • Curah Hujan (mm)

aplikasi mengembalikan:

  1. Tanaman yang direkomendasikan beserta tingkat kepercayaan model.
  2. Penjelasan berbahasa Indonesia yang mendeskripsikan faktor-faktor pendorong keputusan.
  3. Grafik batang SHAP yang memvisualisasikan kontribusi setiap fitur (merah = positif, biru = negatif).

Struktur Proyek

deciflora/
├── dataset/
│   └── Crop_recommendation.csv          # data pelatihan mentah
├── model/
│   ├── xgb_model.json                   # model XGBoost terlatih
│   ├── scaler.pkl                       # StandardScaler yang sudah di-fit
│   └── label_encoder.pkl                # LabelEncoder yang sudah di-fit
├── notebooks/
│   └── train.ipynb                      # notebook penelitian asli
├── src/
│   ├── __init__.py
│   ├── model.py                         # muat model + prediksi
│   ├── nlg.py                           # penjelasan berbahasa Indonesia
│   └── train_model.py                   # latih & simpan model (jalankan sekali)
├── app/
│   └── main.py                          # aplikasi Streamlit
├── pyproject.toml
├── uv.lock
└── README.md

Cara Kerja

  1. Pemuatan model (src/model.py)

    • Menggunakan XGBClassifier.load_model pada model/xgb_model.json.
    • Memuat StandardScaler dan LabelEncoder yang sudah di-fit via joblib.
  2. Prediksi (src/model.py)

    • Mengulangi preprocessing persis seperti di notebook:
      • Urutan fitur → scaling dengan scaler → prediksi.
    • Mengembalikan label tanaman dan probabilitas kelas.
  3. Eksplainabilitas (app/main.py)

    • Membangun shap.TreeExplainer dari model (di-cache).
    • Menghitung nilai SHAP untuk instance input.
    • Memplot kontribusi untuk kelas yang diprediksi.
  4. NLG (src/nlg.py)

    • Menghasilkan teks penjelasan dalam Bahasa Indonesia:
      • Kepercayaan tinggi (≥80%) → "sangat merekomendasikan".
      • Mencantumkan faktor SHAP positif teratas (pendukung) dan negatif (peringatan) beserta nilai aktualnya.

Memulai

Prasyarat

  • Python >= 3.12
  • uv (disarankan) — proyek menggunakan uv.lock

Instalasi

uv sync
source .venv/bin/activate

Atau dengan pip:

pip install -e .

Latih model (opsional)

Artefak terlatih sudah tersedia di model/, sehingga langkah ini bisa dilewati. Untuk menghasilkan ulang:

python src/train_model.py

Jalankan aplikasi

streamlit run app/main.py

Buka URL yang ditampilkan (default: http://localhost:8501).


Penggunaan

  1. Isi tujuh kolom parameter tanah/lingkungan.
  2. Klik Rekomendasikan Tanaman.
  3. Baca rekomendasi, penjelasan NLG, dan grafik SHAP.

Model & Artefak

File Keterangan
model/xgb_model.json Classifier XGBoost terlatih (multi-kelas)
model/scaler.pkl StandardScaler yang sudah di-fit
model/label_encoder.pkl LabelEncoder (label tanaman)

Catatan: notebooks/train.ipynb tidak menyimpan model. src/train_model.py adalah sumber artefak yang di-commit.


Milestone

  1. Muat model terlatihsrc/model.py (load_model, predict_crop).
  2. UI Streamlitapp/main.py form input + tampilan prediksi.
  3. Integrasi SHAP — visualisasi TreeExplainer di UI.
  4. Penjelasan NLGsrc/nlg.py teks rekomendasi berbahasa Indonesia di UI.


Lisensi

Penggunaan kode untuk keperluan akademis dan non-komersial diperbolehkan dengan mencantumkan atribusi yang sesuai.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages