AyoAgbaje's picture
Update app.py
a80cb88 verified
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use("fivethirtyeight")
import sklearn
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, StackingRegressor
from sklearn.preprocessing import FunctionTransformer, MinMaxScaler, StandardScaler, LabelEncoder, OrdinalEncoder
from sklearn.model_selection import train_test_split
import xgboost
import tqdm
from tqdm.auto import trange, tqdm
import pickle
import gradio as gr
def run():
def make_predictions(domain_, year_, item_, unit_, flag_, flag_description_, element_, mean_temp_, total_temp_, mrh_, trh_, mrf_, trf_, mean_fert_, total_fert_, mean_pest_, total_pest_):
X_train = pd.read_csv("xtrain.csv")
X = X_train.copy()
le = OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=-1)
le.fit(X_train[["Domain", "Item", "Unit", "Flag Description", "Element"]])
X_train[["Domain", "Item", "Unit", "Flag Description", "Element"]] = le.transform(X_train[["Domain", "Item", "Unit", "Flag Description", "Element"]])
scaler_ = MinMaxScaler(feature_range=(0, 1))
scaler_.fit(X_train)
X_train = scaler_.transform(X_train)
X_train = pd.DataFrame(X_train, columns = X.columns)
dataset_dict = {"Domain": [domain_],
"Year": [float(year_)],
"Item": [item_],
"Unit": [unit_],
"Flag": [flag_],
"Flag Description": [flag_description_],
"Element": [element_],
"Mean temperature": [float(mean_temp_)],
"Total temperature": [float(total_temp_)],
"Mean relative humidity": [float(mrh_)],
"Total relative humidity": [float(trh_)],
"Mean Rainfall(mm)": [float(mrf_)],
"Total Rainfall(mm)": [float(trf_)],
"Mean Fertilizer": [float(mean_fert_)],
"Total Fertilizer": [float(total_fert_)],
"Mean Pesticide": [float(mean_pest_)],
"Total Pesticide": [float(total_pest_)],}
df = pd.DataFrame(data = dataset_dict)
df = df[['Domain', 'Element', 'Item', 'Year', 'Unit', 'Flag Description',
'Mean temperature', 'Total temperature', 'Mean relative humidity',
'Total relative humidity', 'Mean Rainfall(mm)', 'Total Rainfall(mm)',
'Mean Fertilizer', 'Total Fertilizer', 'Mean Pesticide',
'Total Pesticide']]
df[["Domain", "Item", "Unit", "Flag Description", "Element"]] = le.transform(df[["Domain", "Item", "Unit", "Flag Description", "Element"]])
X = scaler_.transform(df)
df = pd.DataFrame(X, columns = X_train.columns)
with open("model.pkl", "rb") as file_:
model = pickle.load(file_)
result = model.predict(df)
file_.close()
return f"Estimated Crop Yield based on Inputted Values is {abs(result[0])}"
title = "Simple Gradio Interface for Estimating/Predicting crop Yield"
description = " "
cassava_yield = pd.read_csv("cassava_yield.csv")
demo = gr.Interface(fn = make_predictions, inputs =[gr.Dropdown(choices = cassava_yield["Domain"].unique().tolist(), multiselect=False, label = "Domain"),
gr.TextArea(lines = 1, label = "Year", placeholder = "Year"),
gr.Dropdown(choices = cassava_yield["Item"].unique().tolist(), multiselect=False, label = "Item"),
gr.Dropdown(choices = cassava_yield["Unit"].unique().tolist(), multiselect=False, label = "Unit"),
gr.Dropdown(choices = cassava_yield["Flag"].unique().tolist(), multiselect=False, label = "Flag"),
gr.Dropdown(choices = cassava_yield["Flag Description"].unique().tolist(), multiselect=False, label = "Flag Description"),
gr.Dropdown(choices = cassava_yield["Element"].unique().tolist(), multiselect=False, label = "Element"),
gr.TextArea(lines = 1, label = "Input Estimated Temperature(mean)", placeholder = "mean temp"),
gr.TextArea(lines = 1, label = "Input Estimated Temperature(Total)", placeholder = "total temp"),
gr.TextArea(lines = 1, label = "Input Estimated Relative Humidity(mean)", placeholder = "mean relative humidity"),
gr.TextArea(lines = 1, label = "Input Estimated Relative Humidity(Total)", placeholder = "total relative humidity"),
gr.TextArea(lines = 1, label = "Input Estimated Rainfall(mm)(mean)", placeholder = "mean rainfall"),
gr.TextArea(lines = 1, label = "Input Estimated Rainfall(mm)(Total)", placeholder = "total rainfall"),
gr.TextArea(lines = 1, label = "Input Estimated Fertilizer(mean)", placeholder = "mean fertilizer"),
gr.TextArea(lines = 1, label = "Input Estimated Fertilizer(Total)", placeholder = "total fertilizer"),
gr.TextArea(lines = 1, label = "Input Estimated Pesticide(mean)", placeholder = "mean pesticide"),
gr.TextArea(lines = 1, label = "Input Estimated Pesticide(Total)", placeholder = "total pesticide")],
outputs = gr.Textbox(label = "Result....."),
title = title,
description=description)
demo.launch(share = False)
if __name__ == "__main__":
run()