text2cost / app.py
sprite33's picture
choices
88389bc
raw
history blame
4.18 kB
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()