Spaces:
Sleeping
Sleeping
| 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() |