File size: 3,740 Bytes
c35149c
 
 
 
 
 
 
 
 
caee0ad
 
 
c35149c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# -*- 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()