|
import pandas as pd |
|
from sklearn.linear_model import LinearRegression |
|
from sklearn.preprocessing import LabelEncoder |
|
import gradio as gr |
|
import numpy as np |
|
import os |
|
|
|
|
|
df = pd.read_csv('insurance_data.csv') |
|
|
|
|
|
le_sex = LabelEncoder() |
|
df['sex'] = le_sex.fit_transform(df['sex']) |
|
|
|
le_smoker = LabelEncoder() |
|
df['smoker'] = le_smoker.fit_transform(df['smoker']) |
|
|
|
le_region = LabelEncoder() |
|
df['region'] = le_region.fit_transform(df['region']) |
|
|
|
|
|
X = df.drop('expenses', axis=1) |
|
y = df['expenses'] |
|
|
|
|
|
model = LinearRegression() |
|
model.fit(X, y) |
|
|
|
|
|
def categorize_expense(expense): |
|
if expense < 10000: |
|
return 'low risk' |
|
elif expense < 30000: |
|
return 'medium risk' |
|
else: |
|
return 'high risk' |
|
|
|
|
|
def predict_risk(age, sex, bmi, children, smoker, region): |
|
sex = le_sex.transform([sex])[0] |
|
smoker = le_smoker.transform([smoker])[0] |
|
region = le_region.transform([region])[0] |
|
expense = model.predict(np.array([age, sex, bmi, children, smoker, region]).reshape(1, -1))[0] |
|
return categorize_expense(expense) |
|
|
|
|
|
iface = gr.Interface(fn=predict_risk, |
|
inputs=['number', 'text', 'number', 'number', 'text', 'text'], |
|
outputs='text', |
|
theme=gr.themes.Monochrome( |
|
primary_hue="blue", |
|
secondary_hue="blue", |
|
neutral_hue="blue" |
|
), |
|
description="This is a model that allows an insurer to automatically predict whether the risk of insuring a customer is 'high', 'medium', or 'low' using a sophisticated machine learning technique. The insurer is not required to know ML linear regression algorithms to use this model. All they have to do is provide the following risk factors the model was trained on:<br> <br>Age<br>Sex (female/male)<br>Body Mass Index (BMI)<br>Children (number)<br>Smoker (yes/no)<br>Region (Southwest/Northwest - adjust depending on the area served)<br>Expenses (annual expenses)<br><br>Go back to: <a href='https://aitechproducts.com/insurance.html'>Insurance Products</a>", |
|
examples=None, |
|
title="Insurance Risk Predictor") |
|
|
|
|
|
|
|
iface.launch(auth=(os.environ['USERNAME1'],os.environ['PASSWORD1'])) |
|
|