Q-b1t commited on
Commit
73481a7
·
1 Parent(s): 51996af

initial commit

Browse files
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/insurance_regression_model.keras filter=lfs diff=lfs merge=lfs -text
37
+ assets/column_transformer.joblib filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,6 +1,6 @@
1
  ---
2
  title: Insurance Regression
3
- emoji: 🌍
4
  colorFrom: green
5
  colorTo: blue
6
  sdk: gradio
 
1
  ---
2
  title: Insurance Regression
3
+ emoji: 🏥
4
  colorFrom: green
5
  colorTo: blue
6
  sdk: gradio
app.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ from joblib import load
4
+ import gradio as gr
5
+ from tensorflow.keras.models import load_model
6
+
7
+
8
+ # filepaths
9
+ column_transform_path = "assets/column_transformer.joblib" # change during the creation of the huggingface app
10
+ model_path = "assets/insurance_regression_model.keras" # change during the creation of the huggingface app
11
+
12
+ # instance the models
13
+ column_transformer = load(column_transform_path)
14
+ insurance_model = load_model(model_path)
15
+
16
+ # short description of the stuff
17
+ title = "Insurance Regressor Model"
18
+ description = "POC of a deep learning regression model for estimating insurance charges based on 11 input variables."
19
+ article = "The model was implemented in tensorflow. It is simple as i made it as a refresher for reviewing the Tensorflow fundamentals (the problem most likely could be solved using classical regression). The dataset used was [Medical Cost Personal Datasets](https://www.kaggle.com/datasets/mirichoi0218/insurance)."
20
+
21
+ # processing function
22
+ def insurance_prediction(age,gender,bmi,children,smoker,region):
23
+ columns = ['age', 'sex', 'bmi', 'children', 'smoker', 'region']
24
+ # transform some data to the datatypes compatible with column transfomer
25
+ age = int(age)
26
+ gender = "male" if gender else "female"
27
+ children = int(children)
28
+ smoker = "yes" if smoker else "no"
29
+ region = region[0] if len(region) > 0 else 'northeast' # since it is a proof of concept, i left the value there.
30
+ # arange the values into a list
31
+ values = [age,gender,bmi,children,smoker,region]
32
+ # create a dictionary to structure the sample at hand
33
+ sample = {k:v for k,v in zip(columns,values)}
34
+ # create a dataframe using the sample
35
+ X = pd.DataFrame(data = pd.Series(sample)).T
36
+ # preprocess the dataframe
37
+ X_preprocessed = column_transformer.transform(X)
38
+ # make the prediction accordingly
39
+ y_pred = insurance_model.predict(X_preprocessed)
40
+ return y_pred[0][0]
41
+
42
+
43
+
44
+
45
+
46
+ demo = gr.Interface(
47
+ fn = insurance_prediction,
48
+ inputs = [
49
+ gr.Number(value = 40,label = "Age",show_label=True),
50
+ gr.Checkbox(value = False,label = "Male",show_label = True),
51
+ gr.Number(value = 30,label = "Body Mass Index",show_label=True),
52
+ gr.Number(value = 1,label = "Number of Children",show_label=True),
53
+ gr.Checkbox(value = False,label = "Smoker",show_label = True),
54
+ gr.CheckboxGroup(choices = ['northeast', 'northwest', 'southeast', 'southwest'],
55
+ value = ['northeast', 'northwest', 'southeast', 'southwest'],
56
+ label="Region",
57
+ info="Will only take into consideration the fist one selected.")
58
+ ],
59
+ outputs = [
60
+ gr.Number(label = "Insurance Charges Estimate (American Dollars)")
61
+ ],
62
+ title = title,
63
+ description = description,
64
+ article = article
65
+ )
66
+
67
+ demo.launch()
assets/column_transformer.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d53d73e17da5e8fb4822f307772383138631fa489d251d7844071d87e5a0a0e2
3
+ size 3503
assets/insurance_regression_model.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:291424b48786654966fe4dd77332444458cd5e33793872ea1bec708b9db3ccd8
3
+ size 78752
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ tensorflow==2.12.0
2
+ gradio==3.39.0
3
+ pandas==1.5.3
4
+ numpy==1.23.5
5
+ scikit-learn==1.2.2
6
+ joblib==1.3.1