Spaces:
Running
Running
| 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() |