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("""
Aplikasi Machine Learning (Regresi) untuk memprediksi harga rumah di area Bandung berdasarkan spesifikasi luas dan fasilitas ruangan.
""") 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()