rafhiromadoni commited on
Commit
7121bad
Β·
verified Β·
1 Parent(s): f271732

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -18
app.py CHANGED
@@ -9,26 +9,30 @@ model = joblib.load('real_estate_model.pkl')
9
  # 2. FUNGSI PREDIKSI REGRESI
10
  def predict_price(luas_bangunan, luas_tanah, kamar_mandi, kamar_tidur):
11
  try:
12
- # 1. Masukkan ke dalam format Dictionary agar nama kolom terjamin benar
13
  input_data = {
14
  'Luas_Bangunan_m2': [luas_bangunan],
15
  'Luas_Tanah_m2': [luas_tanah],
16
  'kamar_mandi': [kamar_mandi],
17
  'kamar_tidur': [kamar_tidur]
18
  }
19
-
20
- # 2. Ubah menjadi DataFrame
21
  input_df = pd.DataFrame(input_data)
22
 
23
- # 3. TRIK JITU: Otomatis menyusun ulang urutan kolom sesuai yang diinginkan model
24
  if hasattr(model, 'feature_names_in_'):
25
  input_df = input_df[model.feature_names_in_]
26
 
27
- # 4. Lakukan prediksi
28
- predicted_price = model.predict(input_df)[0]
 
 
 
 
 
 
29
 
30
- # Format output sebagai harga Rupiah
31
- return f"### 🏑 Estimasi Harga Properti: \n# **Rp {predicted_price:,.0f}**"
32
 
33
  except Exception as e:
34
  return f"⚠️ Terjadi error saat prediksi: {str(e)}"
@@ -36,15 +40,15 @@ def predict_price(luas_bangunan, luas_tanah, kamar_mandi, kamar_tidur):
36
  # 3. ANTARMUKA GRADIO
37
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
38
  gr.Markdown("""
39
- <h1 style='text-align: center;'>πŸ™οΈ AI Real Estate Valuation</h1>
40
- <p style='text-align: center;'>Aplikasi Machine Learning (Regresi) untuk memprediksi harga properti berdasarkan spesifikasi luas dan fasilitas ruangan.</p>
41
  """)
42
 
43
  with gr.Row():
44
  with gr.Column(scale=1):
45
  gr.Markdown("**πŸ“ Spesifikasi Luas**")
46
- luas_tanah = gr.Number(value=100, label="Luas Tanah (m2)")
47
- luas_bangunan = gr.Number(value=80, label="Luas Bangunan (m2)")
48
 
49
  gr.Markdown("**πŸ›οΈ Fasilitas Ruangan**")
50
  kamar_tidur = gr.Slider(minimum=1, maximum=10, value=3, step=1, label="Jumlah Kamar Tidur")
@@ -56,12 +60,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
56
  gr.Markdown("**πŸ“Š Hasil Analisis AI**")
57
  out_price = gr.Markdown()
58
 
59
- gr.Markdown("""
60
- ---
61
- **πŸ’‘ Info Model:**
62
- Model ini menggunakan algoritma Machine Learning untuk menemukan pola harga di pasaran berdasarkan kombinasi ukuran luas tanah/bangunan serta jumlah ruangan utama.
63
- """)
64
-
65
  # Hubungkan tombol
66
  btn_predict.click(
67
  fn=predict_price,
 
9
  # 2. FUNGSI PREDIKSI REGRESI
10
  def predict_price(luas_bangunan, luas_tanah, kamar_mandi, kamar_tidur):
11
  try:
12
+ # Susun data input
13
  input_data = {
14
  'Luas_Bangunan_m2': [luas_bangunan],
15
  'Luas_Tanah_m2': [luas_tanah],
16
  'kamar_mandi': [kamar_mandi],
17
  'kamar_tidur': [kamar_tidur]
18
  }
 
 
19
  input_df = pd.DataFrame(input_data)
20
 
21
+ # Urutkan kolom sesuai model
22
  if hasattr(model, 'feature_names_in_'):
23
  input_df = input_df[model.feature_names_in_]
24
 
25
+ # Prediksi hasil mentah (Contoh output model: 1.38 atau 2.15)
26
+ predicted_raw = model.predict(input_df)[0]
27
+
28
+ # ========================================================
29
+ # PERBAIKAN: KARENA MODEL DILATIH DENGAN 'Harga_Miliar',
30
+ # MAKA KITA KALIKAN 1 MILIAR (1.000.000.000)
31
+ # ========================================================
32
+ predicted_price = predicted_raw * 1_000_000_000
33
 
34
+ # Format output sebagai harga Rupiah dengan pemisah ribuan
35
+ return f"### 🏑 Estimasi Harga Rumah di Bandung: \n# **Rp {predicted_price:,.0f}**"
36
 
37
  except Exception as e:
38
  return f"⚠️ Terjadi error saat prediksi: {str(e)}"
 
40
  # 3. ANTARMUKA GRADIO
41
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
42
  gr.Markdown("""
43
+ <h1 style='text-align: center;'>πŸ™οΈ AI Real Estate Valuation (Bandung)</h1>
44
+ <p style='text-align: center;'>Aplikasi Machine Learning (Regresi) untuk memprediksi harga rumah di area Bandung berdasarkan spesifikasi luas dan fasilitas ruangan.</p>
45
  """)
46
 
47
  with gr.Row():
48
  with gr.Column(scale=1):
49
  gr.Markdown("**πŸ“ Spesifikasi Luas**")
50
+ luas_tanah = gr.Number(value=176, label="Luas Tanah (m2)")
51
+ luas_bangunan = gr.Number(value=176, label="Luas Bangunan (m2)")
52
 
53
  gr.Markdown("**πŸ›οΈ Fasilitas Ruangan**")
54
  kamar_tidur = gr.Slider(minimum=1, maximum=10, value=3, step=1, label="Jumlah Kamar Tidur")
 
60
  gr.Markdown("**πŸ“Š Hasil Analisis AI**")
61
  out_price = gr.Markdown()
62
 
 
 
 
 
 
 
63
  # Hubungkan tombol
64
  btn_predict.click(
65
  fn=predict_price,