RealEstate / app.py
rafhiromadoni's picture
Update app.py
7121bad verified
import gradio as gr
import pandas as pd
import joblib
# 1. LOAD MODEL
print("Memuat model Real Estate Valuation...")
model = joblib.load('real_estate_model.pkl')
# 2. FUNGSI PREDIKSI REGRESI
def predict_price(luas_bangunan, luas_tanah, kamar_mandi, kamar_tidur):
try:
# Susun data input
input_data = {
'Luas_Bangunan_m2': [luas_bangunan],
'Luas_Tanah_m2': [luas_tanah],
'kamar_mandi': [kamar_mandi],
'kamar_tidur': [kamar_tidur]
}
input_df = pd.DataFrame(input_data)
# Urutkan kolom sesuai model
if hasattr(model, 'feature_names_in_'):
input_df = input_df[model.feature_names_in_]
# Prediksi hasil mentah (Contoh output model: 1.38 atau 2.15)
predicted_raw = model.predict(input_df)[0]
# ========================================================
# PERBAIKAN: KARENA MODEL DILATIH DENGAN 'Harga_Miliar',
# MAKA KITA KALIKAN 1 MILIAR (1.000.000.000)
# ========================================================
predicted_price = predicted_raw * 1_000_000_000
# Format output sebagai harga Rupiah dengan pemisah ribuan
return f"### 🏑 Estimasi Harga Rumah di Bandung: \n# **Rp {predicted_price:,.0f}**"
except Exception as e:
return f"⚠️ Terjadi error saat prediksi: {str(e)}"
# 3. ANTARMUKA GRADIO
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("""
<h1 style='text-align: center;'>πŸ™οΈ AI Real Estate Valuation (Bandung)</h1>
<p style='text-align: center;'>Aplikasi Machine Learning (Regresi) untuk memprediksi harga rumah di area Bandung berdasarkan spesifikasi luas dan fasilitas ruangan.</p>
""")
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("**πŸ“ Spesifikasi Luas**")
luas_tanah = gr.Number(value=176, label="Luas Tanah (m2)")
luas_bangunan = gr.Number(value=176, label="Luas Bangunan (m2)")
gr.Markdown("**πŸ›οΈ Fasilitas Ruangan**")
kamar_tidur = gr.Slider(minimum=1, maximum=10, value=3, step=1, label="Jumlah Kamar Tidur")
kamar_mandi = gr.Slider(minimum=1, maximum=10, value=2, step=1, label="Jumlah Kamar Mandi")
btn_predict = gr.Button("πŸ’° Prediksi Harga Wajar", variant="primary")
with gr.Column(scale=1):
gr.Markdown("**πŸ“Š Hasil Analisis AI**")
out_price = gr.Markdown()
# Hubungkan tombol
btn_predict.click(
fn=predict_price,
inputs=[luas_bangunan, luas_tanah, kamar_mandi, kamar_tidur],
outputs=out_price
)
if __name__ == "__main__":
demo.launch()