Spaces:
Sleeping
Sleeping
| # app.py - نسخه فوق سبک و تضمینی برای HF Spaces (با T4/A10G) | |
| import gradio as gr | |
| from catboost import CatBoostRegressor | |
| # لود مدل با پیام انتظار (تا کاربر بفهمه داره لود میشه) | |
| model = CatBoostRegressor() | |
| model.load_model("kaatib_v8_optimized.cbm") | |
| def predict(area_type, area, rooms, neighborhood, elevator, parking, warehouse, age): | |
| effective_area = area if area_type == "متراژ مفید (معمول در دیوار)" else area * 0.87 | |
| pred = model.predict([[ | |
| effective_area, | |
| __import__("numpy").log1p(effective_area), | |
| rooms, | |
| age, | |
| 1 if age <= 5 else 0, | |
| neighborhood.strip(), | |
| elevator, | |
| parking, | |
| warehouse | |
| ]])[0] / 1_000_000_000 | |
| return f""" | |
| <div style="text-align:center;padding:35px;background:#0d2b1f;color:white;border-radius:18px;border:4px solid #d4af37;"> | |
| <h1 style="color:#d4af37;font-size:48px;margin:10px 0">{pred:.2f} میلیارد تومان</h1> | |
| <p style="font-size:20px;color:#b8d5cd">رنج واقعی: {(pred*0.88):.2f} – {(pred*1.15):.2f} میلیارد</p> | |
| </div> | |
| """ | |
| with gr.Blocks(title="کاتب - پیشبینی قیمت آپارتمان تهران") as app: | |
| gr.HTML(""" | |
| <div style="text-align:center;padding:50px;background:linear-gradient(135deg,#0d2b1f,#1e4d38);border-radius:20px;margin-bottom:30px"> | |
| <h1 style="font-size:62px;margin:0;color:#d4af37;text-shadow:0 0 30px #d4af3777">کاتب</h1> | |
| <p style="font-size:28px;color:#b8d5cd">هوش مصنوعی پیشبینی قیمت مسکن تهران</p> | |
| <p style="font-size:20px;color:#8fb8a2">۸۱,۰۰۰ آگهی واقعی دیوار ۱۴۰۴</p> | |
| </div> | |
| """) | |
| with gr.Row(): | |
| area_type = gr.Radio(["متراژ مفید (معمول در دیوار)", "متراژ سندی"], value="متراژ مفید (معمول در دیوار)", label="نوع متراژ") | |
| with gr.Row(): | |
| area = gr.Slider(40, 450, 90, step=1, label="متراژ") | |
| rooms = gr.Dropdown([1,2,3,4,5,6], value=3, label="تعداد خواب") | |
| neighborhood = gr.Textbox(placeholder="مثل: سعادت آباد، پونک، نیاوران...", label="محله") | |
| with gr.Row(): | |
| elevator = gr.Checkbox(label="آسانسور", value=True) | |
| parking = gr.Checkbox(label="پارکینگ", value=True) | |
| warehouse = gr.Checkbox(label="انباری", value=True) | |
| age = gr.Slider(0, 50, 8, step=1, label="سن بنا (سال)") | |
| gr.Button("پیشبینی قیمت").click( | |
| predict, | |
| inputs=[area_type, area, rooms, neighborhood, elevator, parking, warehouse, age], | |
| outputs=gr.Markdown() | |
| ) | |
| gr.HTML(""" | |
| <div style="text-align:center;margin-top:50px;padding:30px;background:#f8f9fa;border-radius:18px;border:2px dashed #d4af37"> | |
| <p style="color:#d4af37;font-size:24px">ساخته شده با افتخار در ایران</p> | |
| </div> | |
| """) | |
| app.launch() |