Earthquakes / app.py
kdemertzis's picture
Update app.py
caee0ad
# -*- coding: utf-8 -*-
"""Untitled6.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/github/kdemertzis/Earthquakes/blob/main/GRADIO-Classification_ROW_FORM_BARE.ipynb
"""
#pip install pycaret
#pip install gradio
#pip install pyyaml==5.4.1
"""
Import library
"""
##-- PyCaret
import pycaret
from pycaret.classification import *
##-- Pandas
import pandas as pd
from pandas import Series, DataFrame
##-- Scikit-learn
import sklearn
from string import ascii_letters
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
##-- Gradio
import gradio as gr
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
url = 'https://raw.githubusercontent.com/kdemertzis/Earthquakes/main/Data/Gradio/1_3class.csv'
# load the dataset
df = pd.read_csv(url)
# setup the dataset
grid = setup(data=df, target=df.columns[-1], html=False, silent=True, verbose=False)
df.describe()
best = compare_models(cross_validation=True, n_select = 10, turbo=True)
compare_model_results = pull()
len(best)
10
print(best[:5])
# creating a predict function to be passed into gradio UI
def predict(model, HI, PGA, VMAX, ASI, TSIGN, TBRAC, PP, CAV, SED, TUD, EPA, PGV, PGD, IA, HTOT, ECC, VW1, VW2):
df = pd.DataFrame.from_dict({'HI': [HI], 'PGA': [PGA], 'VMAX': [VMAX], 'ASI': [ASI], 'TSIGN': [TSIGN], 'TBRAC': [TBRAC], 'PP': [PP], 'CAV': [CAV], 'SED': [SED], 'TUD': [TUD], 'EPA': [EPA], 'PGV': [PGV], 'PGD': [PGD], 'IA': [IA], 'HTOT': [HTOT], 'ECC': [ECC], 'VW1': [VW1], 'VW2': [VW2]})
model_index = list(compare_model_results['Model']).index(model)
model = best[model_index]
pred = predict_model(model, df, raw_score=True)
return {'Slight': pred['Score_A'][0].astype('float64'), 'Moderate': pred['Score_B'][0].astype('float64' ), 'Heavy': pred['Score_C'][0].astype('float64')}
title="Classification of Buildings' Seismic Damage by ML Techniques"
model = gr.inputs.Dropdown(list(compare_model_results['Model']),label="Model")
HI = gr.inputs.Slider(minimum=-1, maximum=1, default=df['HI'].mean(), label="HI")
PGA = gr.inputs.Slider(minimum=-1, maximum=1, default=df['PGA'].mean(), label="PGA")
VMAX = gr.inputs.Slider(minimum=-1, maximum=1, default=df['VMAX'].mean(), label="VMAX")
ASI = gr.inputs.Slider(minimum=-1, maximum=1, default=df['ASI'].mean(), label="ASI")
TSIGN = gr.inputs.Slider(minimum=-1, maximum=1, default=df['TSIGN'].mean(), label="TSIGN")
TBRAC = gr.inputs.Slider(minimum=-1, maximum=1, default=df['TBRAC'].mean(), label="TBRAC")
PP = gr.inputs.Slider(minimum=-1, maximum=1, default=df['PP'].mean(), label="PP")
CAV = gr.inputs.Slider(minimum=-1, maximum=1, default=df['CAV'].mean(), label="CAV")
SED = gr.inputs.Slider(minimum=-1, maximum=1, default=df['SED'].mean(), label="SED")
TUD = gr.inputs.Slider(minimum=-1, maximum=1, default=df['TUD'].mean(), label="TUD")
EPA = gr.inputs.Slider(minimum=-1, maximum=1, default=df['EPA'].mean(), label="EPA")
PGV = gr.inputs.Slider(minimum=-1, maximum=1, default=df['PGV'].mean(), label="PGV")
PGD = gr.inputs.Slider(minimum=-1, maximum=1, default=df['PGD'].mean(), label="PGD")
IA = gr.inputs.Slider(minimum=-1, maximum=1, default=df['IA'].mean(), label="IA")
HTOT = gr.inputs.Slider(minimum=-1, maximum=1, default=df['HTOT'].mean(), label="HTOT")
ECC = gr.inputs.Slider(minimum=-1, maximum=1, default=df['ECC'].mean(), label="ECC")
VW1 = gr.inputs.Slider(minimum=-1, maximum=1, default=df['VW1'].mean(), label="VW1")
VW2 = gr.inputs.Slider(minimum=-1, maximum=1, default=df['VW2'].mean(), label="VW2")
gr.Interface(predict,[model, HI, PGA, VMAX, ASI, TSIGN, TBRAC, PP, CAV, SED, TUD, EPA, PGV, PGD, IA, HTOT, ECC, VW1, VW2], "label", title=title, live=True).launch()