carlosgonzalezmartinez's picture
app 1
a7727aa verified
raw
history blame
3.96 kB
import os
import uuid
import joblib
import json
import gradio as gr
import pandas as pd
from huggingface_hub import CommitScheduler
from pathlib import Path
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from warnings import filterwarnings
filterwarnings('ignore')
log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
log_folder = log_file.parent
scheduler = CommitScheduler(
repo_id="machine-failure-logs",
repo_type="dataset",
folder_path=log_folder,
path_in_repo="data",
every=2
)
health_status_predictor = joblib.load('model.joblib')
Latitude = gr.Number(label='Latitude')
Longitude = gr.Number(label='Longitude')
DBH = gr.Number(label='DBH')
Tree_Height = gr.Number(label='Tree_Height')
Crown_Width_North_South = gr.Number(label='Crown_Width_North_South')
Crown_Width_East_West = gr.Number(label='Crown_Width_East_West')
Slope = gr.Number(label='Slope')
Elevation = gr.Number(label='Elevation')
Temperature = gr.Number(label='Temperature')
Humidity = gr.Number(label='Humidity')
Soil_TN = gr.Number(label='Soil_TN')
Soil_TP = gr.Number(label='Soil_TP')
Soil_AP = gr.Number(label='Soil_AP')
Soil_AN = gr.Number(label='Soil_AN')
Menhinick_Index = gr.Number(label='Menhinick_Index')
Gleason_Index = gr.Number(label='Gleason_Index')
Fire_Risk_Index = gr.Number(label='Fire_Risk_Index')
model_output = gr.Label(label="Health Status")
def predict_health_status(Latitude, Longitude, DBH, Tree_Height, Crown_Width_North_South, Crown_Width_East_West, Slope, Elevation, Temperature, Humidity, Soil_TN, Soil_TP, Soil_AP, Soil_AN, Menhinick_Index, Gleason_Index, Fire_Risk_Index):
sample = {
'Latitude': Latitude,
'Longitude': Longitude,
'DBH': DBH,
'Tree_Height': Tree_Height,
'Crown_Width_North_South': Crown_Width_North_South,
'Crown_Width_East_West': Crown_Width_East_West,
'Slope': Slope,
'Elevation': Elevation,
'Temperature': Temperature,
'Humidity': Humidity,
'Soil_TN': Soil_TN,
'Soil_TP': Soil_TP,
'Soil_AP': Soil_AP,
'Soil_AN': Soil_AN,
'Menhinick_Index': Menhinick_Index,
'Gleason_Index': Gleason_Index.
'Fire_Risk_Index': Fire_Risk_Index
}
data_point = pd.DataFrame([sample])
prediction = health_status_predictor.predict(data_point).tolist()
with scheduler.lock:
with log_file.open("a") as f:
f.write(json.dumps(
{
'Latitude': Latitude,
'Longitude': Longitude,
'DBH': DBH,
'Tree_Height': Tree_Height,
'Crown_Width_North_South': Crown_Width_North_South,
'Crown_Width_East_West': Crown_Width_East_West,
'Slope': Slope,
'Elevation': Elevation,
'Temperature': Temperature,
'Humidity': Humidity,
'Soil_TN': Soil_TN,
'Soil_TP': Soil_TP,
'Soil_AP': Soil_AP,
'Soil_AN': Soil_AN,
'Menhinick_Index': Menhinick_Index,
'Gleason_Index': Gleason_Index,
'Fire_Risk_Index': Fire_Risk_Index,
'prediction': prediction[0]
}
))
f.write("\n")
return prediction[0]
demo = gr.Interface(
fn=predict_health_status,
inputs=[Latitude, Longitude, DBH, Tree_Height, Crown_Width_North_South, Crown_Width_East_West, Slope, Elevation, Temperature, Humidity, Soil_TN, Soil_TP, Soil_AP, Soil_AN, Menhinick_Index, Gleason_Index, Fire_Risk_Index],
outputs=model_output,
title="Health Status Predictor",
description="This API allows you to predict the health status of a Tree",
allow_flagging="auto",
concurrency_limit=8
)
demo.queue()
demo.launch(share=False)