Spaces:
Sleeping
Sleeping
import gradio as gr | |
import tensorflow as tf | |
import joblib | |
import numpy as np | |
from sklearn.pipeline import Pipeline | |
from sklearn.preprocessing import StandardScaler,Normalizer,MinMaxScaler | |
import pandas as pd | |
from tensorflow.keras.models import Model | |
from tensorflow.keras.layers import Input, Dense, LeakyReLU, ELU | |
from tensorflow.keras.models import load_model | |
title = "Concrete Strength Prediction" | |
head = ( | |
"<center>" | |
"Predict the cement strength based on input parameters. Built by Steven Iguza 2024" | |
"</center>" | |
) | |
ref = "Find the whole code [here](https://github.com/hanif-adedotun)." | |
# Load the model | |
model = load_model('model.h5') | |
# model = joblib.load("model.pkl") | |
#model = pickle.load(open('model.pkl', 'rb')) | |
# Function to preprocess input data | |
def preprocess_input(Yvi, Yvii, Q7, Q28, Qi, Qii, Si, Sii, Siii, Siv, Sv, Svi, Svii, Yi, Yii, Yiii,): | |
# Create a DataFrame from the input data | |
# Yvi (7 days) Yvii (28 days) Q (curing temp) 7days Q (curing temp) 28days Qi (Ambaint temp) | |
# Qii (Concrete temp) Si (water content) | |
# Sii (W/C Ratio) Siii (River sand) Siv Aggregate 3/8 Sv Aggregate 1/2 | |
# Svi Rhsobuild 561 plasticizer Svii Cement content Yi (Initial) Yii (Final) Yiii (expansion | |
data = { | |
# 'Yiv (7 days)': [Yiv], | |
# 'Yv (28 days)': [Yv], | |
'Yvi (7 days)': [Yvi], | |
'Yvii (28 days)': [Yvii], | |
'Q (curing temp) 7days': [Q7], | |
'Q (curing temp) 28days': [Q28], | |
'Qi (Ambaint temp)': [Qi], | |
'Qii (Concrete temp)': [Qii], | |
'Si (water content)': [Si], | |
'Sii (W/C Ratio)': [Sii], | |
'Siii (River sand)': [Siii], | |
'Siv Aggregate 3/8': [Siv], | |
'Sv Aggregate 1/2': [Sv], | |
'Svi Rhsobuild 561 plasticizer': [Svi], | |
'Svii Cement content': [Svii], | |
'Yi (Initial)': [Yi], | |
'Yii (Final)': [Yii], | |
'Yiii (expansion)': [Yiii], | |
} | |
df_predict = pd.DataFrame(data) | |
scaler = Pipeline([('Normalizer', Normalizer()), | |
# ('log-transformation', math.logp()) | |
]) | |
df_predict_scaled=scaler.fit_transform(df_predict); | |
return predict_cement_strength(df_predict_scaled) | |
# Function to make predictions | |
def predict_cement_strength(input_data): | |
# Assuming 'model' is your trained regression model | |
prediction_7days,prediction_28days = model.predict(input_data) | |
return round(float(np.float64(prediction_7days)), 2), round(float(np.float64(prediction_28days)), 2) | |
# Input components for Gradio | |
inputs = [ | |
gr.Number(label="Yvi (7 days) (Mpa)"), | |
gr.Number(label="Yvii (28 days) (Mpa)"), | |
gr.Number(label="Q (Curing Temp) 7 days (°C)"), | |
gr.Number(label="Q (Curing Temp) 28 days (°C)"), | |
gr.Number(label="Qi (Ambient Temp) (°C)"), | |
gr.Number(label="Qii (Concrete Temp) (°C)"), | |
gr.Number(label="Si (Water Content) (Kg/m^3)"), | |
gr.Number(label="Sii (W/C Ratio)"), | |
gr.Number(label="Siii (River Sand) (Kg/m^3)"), | |
gr.Number(label="Siv (Aggregate 3/8) (Kg/m^3)"), | |
gr.Number(label="Sv (Aggregate 1/2) (Kg/m^3)"), | |
gr.Number(label="Svi (Rhsobuild 561 Plasticizer) (Kg/m^3)"), | |
gr.Number(label="Svii (Cement Content) (Kg/m^3)"), | |
gr.Number(label="Yi (Initial) (min)"), | |
gr.Number(label="Yii (Final) (min)"), | |
gr.Number(label="Yiii (Expansion) (mm)"), | |
] | |
# Gradio interface | |
gr.Interface( | |
fn=preprocess_input, | |
inputs=[i for i in inputs], | |
outputs=[gr.Number(label="Prediction after 7 days"), gr.Number(label="Prediction after 28 days")], | |
title=title, | |
description=head, | |
allow_flagging=False | |
).launch() |