File size: 1,397 Bytes
addf019
f86975d
 
 
949904e
 
 
f86975d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
import joblib

model = joblib.load("src/insurance_rf_model.pkl")

feature_columns = joblib.load("src/feature_columns.pkl")

st.title("Medical Insurance Cost Prediction")

st.write("This app predicts medical insurance cost using a trained Random Forest model.")

age = st.number_input("Age", min_value=18, max_value=100, value=30)
sex = st.selectbox("Sex", ["female", "male"])
bmi = st.number_input("BMI", min_value=10.0, max_value=60.0, value=25.0)
children = st.number_input("Children", min_value=0, max_value=10, value=0)
smoker = st.selectbox("Smoker", ["no", "yes"])
region = st.selectbox(
    "Region",
    ["southwest", "southeast", "northwest", "northeast"]
)

if st.button("Predict"):
    data = pd.DataFrame({
        "age": [age],
        "sex": [1 if sex == "male" else 0],
        "bmi": [bmi],
        "children": [children],
        "smoker": [1 if smoker == "yes" else 0],
        "high_bmi": [1 if bmi > 30 else 0],
        "has_children": [1 if children > 0 else 0],
        "region_northwest": [1 if region == "northwest" else 0],
        "region_southeast": [1 if region == "southeast" else 0],
        "region_southwest": [1 if region == "southwest" else 0]
    })

    data = data.reindex(columns=feature_columns, fill_value=0)

    prediction = model.predict(data)[0]

    st.success(f"Estimated Insurance Cost: ${prediction:,.2f}")