Spaces:
Sleeping
Sleeping
| # !pip install gradio ipywidgets | |
| import pandas as pd | |
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| # "Artifacts" | |
| pipeline = joblib.load("pipeline.joblib") | |
| label_pipeline = joblib.load("label_pipeline.joblib") | |
| cities = joblib.load("cities.joblib") | |
| classes = joblib.load("classes.joblib") | |
| def predict(city, location, area, bedrooms, baths): | |
| sample = dict() | |
| sample["city"] = city | |
| sample["location"] = location | |
| sample["area"] = area # Column names matching feature names | |
| sample["bedrooms"] = bedrooms | |
| sample["baths"] = baths | |
| sample = pd.DataFrame([sample]) | |
| y_pred = pipeline.predict_proba(sample)[0] | |
| y_pred = dict(zip(classes, y_pred)) | |
| return y_pred | |
| # https://www.gradio.app/guides | |
| with gr.Blocks() as demo: #value คือ ค่าเริ่มต้น | |
| city = gr.Dropdown(cities, value=cities[0], label="City") | |
| location = gr.Textbox(label="Location", placeholder="E.g. Bangkhen") | |
| area = gr.Number(label="Area", value=0.5, minimum=0.5, step=0.5) | |
| bedrooms = gr.Slider(value=1, label="Bedrooms", minimum=0, maximum=10, step=1) | |
| baths = gr.Slider(value=1, label="Baths", minimum=0, maximum=10, step=1) | |
| # with gr.Row(): | |
| # city_init = np.random.choice(cities) | |
| # city = gr.Dropdown(cities, value=city_init, label="City") | |
| # location = gr.Textbox(label="Location", placeholder="E.g. Bangken") | |
| # with gr.Row(): | |
| # area_init = np.random.choice(np.arange(0, 50, 0.5)) | |
| # area = gr.Number(label="Area", value=area_init, minimum=0.5, step=0.5) | |
| # bedrooms_init = np.random.choice(np.arange(0, 10, 1)) | |
| # bedrooms = gr.Slider(value=bedrooms_init, label="Bedrooms", minimum=0, maximum=10, step=1) | |
| # baths_init = np.random.choice(np.arange(0, 10, 1)) | |
| # baths = gr.Slider(value=baths_init, label="Baths", minimum=0, maximum=10, step=1) | |
| predict_btn = gr.Button("Predict", variant="primary") | |
| price = gr.Label(label="Price") | |
| inputs = [city, location, area, bedrooms, baths] | |
| outputs = [price] | |
| predict_btn.click(predict, inputs=inputs, outputs=outputs) | |
| if __name__ == "__main__": | |
| demo.launch() # Local machine only | |
| # demo.launch(server_name="0.0.0.0") # LAN access to local machine | |
| # demo.launch(share=True) # Public access to local machine | |