File size: 4,183 Bytes
26a7f01
cc5ae1e
 
26a7f01
cc5ae1e
 
 
 
 
26a7f01
cc5ae1e
7648841
cc5ae1e
7648841
 
 
 
 
 
 
 
 
 
 
 
 
cc5ae1e
7648841
cc5ae1e
7648841
 
cc5ae1e
7648841
 
 
88389bc
7648841
 
 
 
 
 
 
 
 
 
 
 
 
 
88389bc
 
 
 
 
 
 
 
 
7648841
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc5ae1e
7648841
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import gradio as gr
import pandas as pd
import pickle

# ๋ชจ๋ธ ๋กœ๋”ฉ ํ•จ์ˆ˜
def load_model():
    with open("model.pkl", "rb") as file:
        loaded_pipeline = pickle.load(file)
    return loaded_pipeline

# ์˜ˆ์ธก ํ•จ์ˆ˜ ์ •์˜
def predict_cost(๊ตฌ์กฐ, ์ง€ํ•˜์ธต์ˆ˜, ์ง€์ƒ์ธต์ˆ˜, ์ฃผ์ฐจ์ˆ˜,  ์—ฐ๋ฉด์ , ๋Œ€์ง€๋ฉด์ , ๊ฑด์ถ•๋ฉด์ , ์กฐ๊ฒฝ๋ฉด์ , ๋ฐœ์ฃผ๋…„, ๋ฐœ์ฃผ์›”, ๊ณต์‚ฌ๊ธฐ๊ฐ„, ํ˜„์žฅ์œ„์น˜, ๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„):
    new_project = {
        '๊ตฌ์กฐ': [๊ตฌ์กฐ],
        '์ง€ํ•˜์ธต์ˆ˜': [์ง€ํ•˜์ธต์ˆ˜],
        '์ง€์ƒ์ธต์ˆ˜': [์ง€์ƒ์ธต์ˆ˜],
        '์ฃผ์ฐจ์ˆ˜': [์ฃผ์ฐจ์ˆ˜],
        '์—ฐ๋ฉด์ ': [์—ฐ๋ฉด์ ],
        '๋Œ€์ง€๋ฉด์ ': [๋Œ€์ง€๋ฉด์ ],
        '๊ฑด์ถ•๋ฉด์ ': [๊ฑด์ถ•๋ฉด์ ],
        '์กฐ๊ฒฝ๋ฉด์ ': [์กฐ๊ฒฝ๋ฉด์ ],
        '๋ฐœ์ฃผ๋…„': [๋ฐœ์ฃผ๋…„],
        '๋ฐœ์ฃผ์›”': [๋ฐœ์ฃผ์›”],
        '๊ณต์‚ฌ๊ธฐ๊ฐ„': [๊ณต์‚ฌ๊ธฐ๊ฐ„],
        'ํ˜„์žฅ์œ„์น˜': [ํ˜„์žฅ์œ„์น˜],
        '๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„': [๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„],
    }
       
    model = load_model()
    pred = model.predict(pd.DataFrame.from_dict(new_project))
    return [f'{cost:,.0f}์›' for cost in pred[0]]

with gr.Blocks() as demo:
    gr.Markdown("HG ๊ณต์‚ฌ๋น„ ์˜ˆ์ธก ๋ชจ๋ธ")
    with gr.Row():
        ๊ตฌ์กฐ = gr.Dropdown(label="๊ตฌ์กฐ", choices=['์ฒ ๊ทผ์ฝ˜ํฌ๋ฆฌํŠธ์กฐ', '์ฒ ๊ณจ์กฐ', '์ฒ ๊ณจ์ฒ ๊ทผ์ฝ˜ํฌ๋ฆฌํŠธ์กฐ', '-', '๊ธฐํƒ€'], value='์ฒ ๊ทผ์ฝ˜ํฌ๋ฆฌํŠธ์กฐ')  # '...'๋ถ€๋ถ„์— ๋‹ค๋ฅธ ๊ตฌ์กฐ ํƒ€์ž… ์ถ”๊ฐ€
    with gr.Row():
        ์ง€ํ•˜์ธต์ˆ˜ = gr.Number(label="์ง€ํ•˜์ธต์ˆ˜", value=1)
        ์ง€์ƒ์ธต์ˆ˜ = gr.Number(label="์ง€์ƒ์ธต์ˆ˜", value=1)
        ์ฃผ์ฐจ์ˆ˜ = gr.Number(label="์ฃผ์ฐจ๋Œ€์ˆ˜", value=50)
    with gr.Row():
        ์—ฐ๋ฉด์  = gr.Number(label="์—ฐ๋ฉด์ (m2)", value=300)
        ๋Œ€์ง€๋ฉด์  = gr.Number(label="๋Œ€์ง€๋ฉด์ (m2)", value=500)
        ๊ฑด์ถ•๋ฉด์  = gr.Number(label="๊ฑด์ถ•๋ฉด์ (m2)", value=120)
        ์กฐ๊ฒฝ๋ฉด์  = gr.Number(label="์กฐ๊ฒฝ๋ฉด์ (m2)", value=150)
    with gr.Row():
        ๋ฐœ์ฃผ๋…„ = gr.Number(label="๋ฐœ์ฃผ๋…„", value=2023)
        ๋ฐœ์ฃผ์›” = gr.Number(label="๋ฐœ์ฃผ์›”", value=9)
        ๊ณต์‚ฌ๊ธฐ๊ฐ„ = gr.Number(label="๊ณต์‚ฌ๊ธฐ๊ฐ„(์ผ)", value=100)
    with gr.Row():
        ํ˜„์žฅ์œ„์น˜ = gr.Dropdown(label="ํ˜„์žฅ์œ„์น˜", choices=['์„œ์šธํŠน๋ณ„์‹œ', '์ œ์ฃผํŠน๋ณ„์ž์น˜๋„', '๊ฒฝ์ƒ๋ถ๋„', '์šธ์‚ฐ๊ด‘์—ญ์‹œ', '๊ด‘์ฃผ๊ด‘์—ญ์‹œ', '๊ฒฝ๊ธฐ๋„', '์ถฉ์ฒญ๋ถ๋„',
       '๊ฒฝ์ƒ๋‚จ๋„', '์ „๋ผ๋‚จ๋„', '๋ถ€์‚ฐ๊ด‘์—ญ์‹œ', '์ถฉ์ฒญ๋‚จ๋„', '๋Œ€๊ตฌ๊ด‘์—ญ์‹œ', '๊ฐ•์›๋„', '์ธ์ฒœ๊ด‘์—ญ์‹œ', '์ „๋ผ๋ถ๋„',
       '์„ธ์ข…ํŠน๋ณ„์ž์น˜์‹œ', '๋Œ€์ „๊ด‘์—ญ์‹œ', '๊ฐ•์›ํŠน๋ณ„์ž์น˜๋„'], value='๊ฒฝ๊ธฐ๋„')  # '...'๋ถ€๋ถ„์— ๋‹ค๋ฅธ ํ˜„์žฅ ์œ„์น˜ ์ถ”๊ฐ€
        ๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„ = gr.Dropdown(label="๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„", choices=['๊ทผ๋ฆฐ์ƒํ™œ์‹œ์„ค', '๊ฒฉ๋‚ฉ๊ณ ', '๊ณต๊ณต์—…๋ฌด์‹œ์„ค', '๊ณต๋™์ฃผํƒ', '๊ณต์›์‹œ์„ค', '๊ณต์žฅ', '๊ณตํ•ญ์‹œ์„ค', '๊ด€๊ด‘ํœด๊ฒŒ์‹œ์„ค',
       '๊ต์œก์—ฐ๊ตฌ์‹œ์„ค', '๊ต์œก์—ฐ๊ตฌ์‹œ์„ค ', '๊ธฐ์ˆ™์‚ฌ', '๊ตฐ์‚ฌ์‹œ์„ค', '๊ต์ •์‹œ์„ค', '์—…๋ฌด์‹œ์„ค', '๊ธฐํƒ€ํ•™๊ต์‹œ์„ค',
       '๋…ธ์œ ์ž ์‹œ์„ค', '๋…ธ์œ ์ž์‹œ์„ค', '๋ฐ์ดํ„ฐ์„ผํ„ฐ', '๋™๋ฌผ๋ฐ์‹๋ฌผ๊ด€๋ จ์‹œ์„ค', '๋ฌ˜์ง€ ๊ด€๋ จ ์‹œ์„ค', '๋ฌ˜์ง€๊ด€๋ จ์‹œ์„ค',
       '๋ฌธํ™”๋ฐ์ง‘ํšŒ์‹œ์„ค', '๋ฌธํ™”๋ฐ ์ง‘ํšŒ์‹œ์„ค', '๋ฐฉ์†กํ†ต์‹ ์‹œ์„ค', '์‚ฌํšŒ๋ณต์ง€์‹œ์„ค', '์„ค๊ณต๊ณต์—…๋ฌด์‹œ์„ค', '์ˆ˜๋ จ์‹œ์„ค',
       '์—…๋ฌด์‹œ์„ค ', '์—ฐ๊ตฌ์‹œ์„ค', '์šด๋™์‹œ์„ค', '์šด์ˆ˜์‹œ์„ค', '์šด์ˆ˜์‹œ์„ค ', '์˜๋ฃŒ์‹œ์„ค', '์ž๋™์ฐจ๊ด€๋ จ์‹œ์„ค',
       '์ž์›์ˆœํ™˜๊ด€๋ จ์‹œ์„ค', '์ „์‹œ์‹œ์„ค', '์ฃผ์ฐจ์žฅ', '์ฐฝ๊ณ ์‹œ์„ค', '์ฒด์œก์‹œ์„ค', 'ํŒ๋งค์‹œ์„ค'], value='์—…๋ฌด์‹œ์„ค')  # '...'๋ถ€๋ถ„์— ๋‹ค๋ฅธ ๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„ ์ถ”๊ฐ€
    
    btn = gr.Button("์˜ˆ์ธก")
    
    btn.click(
        predict_cost,
        inputs=[
            ๊ตฌ์กฐ, ์ง€ํ•˜์ธต์ˆ˜, ์ง€์ƒ์ธต์ˆ˜, ์ฃผ์ฐจ์ˆ˜, ์—ฐ๋ฉด์ , ๋Œ€์ง€๋ฉด์ , ๊ฑด์ถ•๋ฉด์ , ์กฐ๊ฒฝ๋ฉด์ ,  ๋ฐœ์ฃผ๋…„, ๋ฐœ์ฃผ์›”, ๊ณต์‚ฌ๊ธฐ๊ฐ„, ํ˜„์žฅ์œ„์น˜, ๊ฑด์ถ•๋ฒ•์ƒ์šฉ๋„
        ],
        outputs=[
            gr.Textbox(label="๊ฑด์ถ•๊ณต์‚ฌ๋น„"),
            gr.Textbox(label="๊ธฐ๊ณ„๊ณต์‚ฌ๋น„"),
            gr.Textbox(label="์ „๊ธฐ๊ณต์‚ฌ๋น„"),
            gr.Textbox(label="ํ†ต์‹ ๊ณต์‚ฌ๋น„"),
            gr.Textbox(label="ํ† ๋ชฉ๊ณต์‚ฌ๋น„"),
            gr.Textbox(label="์กฐ๊ฒฝ๊ณต์‚ฌ๋น„")
        ]
    )

demo.launch()