-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
64 lines (54 loc) · 1.74 KB
/
app.py
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
import streamlit as st
import pandas as pd
import numpy as np
import pickle
from PIL import Image
# Load the pickled models
model = pickle.load(open(r'saved_models\0\model\model.pkl', 'rb'))
encoder = pickle.load(open(r'saved_models\0\target_encoder\target_encoder.pkl', 'rb'))
transformer = pickle.load(open(r'saved_models\0\transform\transformed.pkl', 'rb'))
# Custom CSS styles
st.markdown(
"""
<style>
.sidebar .sidebar-content {
background-image: linear-gradient(#2e7bcf,#2e7bcf);
color: white;
}
.Widget>label {
color: white;
font-weight: 600;
}
[data-testid="stSelectbox"] {
color: black;
}
</style>
""",
unsafe_allow_html=True,
)
st.title(" \n \n Insurance Premium Prediction")
# Sidebar inputs
st.sidebar.header("Input Parameters")
age = st.sidebar.number_input("Age", min_value=18, max_value=100, value=30, step=1)
sex = st.sidebar.selectbox("Gender", ("Male", "Female"))
bmi = st.sidebar.number_input("BMI", min_value=10.0, max_value=50.0, value=25.0, step=0.1)
children = st.sidebar.selectbox("Number of Children", (0, 1, 2, 3, 4, 5))
smoker = st.sidebar.selectbox("Smoker", ("Yes", "No"))
region = st.sidebar.selectbox("Region", ("southeast", "southwest", "northeast", "northwest"))
# Prepare the input data
l = {}
l["age"] = age
l["sex"] = sex
l["bmi"] = bmi
l["children"] = children
l["smoker"] = smoker
l["region"] = region
df = pd.DataFrame(l, index=[0])
df["region"] = encoder.transform(df["region"])
df["sex"] = df["sex"].map({"Male": 1, "Female": 0})
df["smoker"] = df["smoker"].map({"Yes": 1, "No": 0})
df = transformer.transform(df)
y_pred = model.predict(df)
# Display the result
if st.button("Predict"):
st.success(f"The estimated premium is {round(y_pred[0])} INR")