File size: 2,938 Bytes
f00a83b e1c88d9 8680283 f1a0cad f00a83b f1a0cad 8680283 f00a83b f1a0cad 002d19a f00a83b 8680283 f1a0cad 8680283 f1a0cad 002d19a f00a83b |
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 |
import streamlit as st
import numpy as np
import pickle
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
def load_data():
# Replace this with your actual data loading logic
X_train = np.random.rand(100, 5)
y_train = np.random.rand(100)
return X_train, y_train
def load_model_artifacts():
with open('slump_regressor.pkl', 'rb') as f:
regressor = pickle.load(f)
with open('scaler.pkl', 'rb') as f:
scaler = pickle.load(f)
with open('pca.pkl', 'rb') as f:
pca = pickle.load(f)
return regressor, scaler, pca
def save_model_artifacts(regressor, scaler, pca):
with open('slump_regressor.pkl', 'wb') as f:
pickle.dump(regressor, f, protocol=pickle.HIGHEST_PROTOCOL)
with open('scaler.pkl', 'wb') as f:
pickle.dump(scaler, f, protocol=pickle.HIGHEST_PROTOCOL)
with open('pca.pkl', 'wb') as f:
pickle.dump(pca, f, protocol=pickle.HIGHEST_PROTOCOL)
def predict_slump_app(regressor, scaler, pca):
st.subheader("Enter Concrete Mix Parameters")
cement = st.number_input("Cement (kg/m³)", min_value=0.0, step=1.0)
slag = st.number_input("Slag (kg/m³)", min_value=0.0, step=1.0)
flyash = st.number_input("Fly Ash (kg/m³)", min_value=0.0, step=1.0)
water = st.number_input("Water (kg/m³)", min_value=0.0, step=1.0)
superplasticizer = st.number_input("Superplasticizer (kg/m³)", min_value=0.0, step=0.1)
coarseaggregate = st.number_input("Coarse Aggregate (kg/m³)", min_value=0.0, step=1.0)
fineaggregate = st.number_input("Fine Aggregate (kg/m³)", min_value=0.0, step=1.0)
if st.button("Predict Slump Strength"):
X_new = np.array([cement, slag, flyash, water, superplasticizer, coarseaggregate, fineaggregate])
X_new = scaler.transform([X_new])
X_new = pca.transform(X_new)
slump_prediction = regressor.predict(X_new)[0]
return slump_prediction
else:
return None
def main():
st.set_page_config(page_title="Concrete Slump Strength Prediction")
st.title("Concrete Slump Strength Prediction")
st.write("Enter the concrete mix parameters to predict the slump.")
try:
regressor, scaler, pca = load_model_artifacts()
except (FileNotFoundError, UnpicklingError):
X_train, y_train = load_data()
regressor = LinearRegression()
regressor.fit(X_train, y_train)
scaler = StandardScaler()
scaler.fit(X_train)
pca = PCA(n_components=4)
pca.fit(scaler.transform(X_train))
save_model_artifacts(regressor, scaler, pca)
slump_prediction = predict_slump_app(regressor, scaler, pca)
if slump_prediction is not None:
st.subheader("Predicted Slump Strength")
st.markdown(f"The predicted slump strength is **{slump_prediction:.2f} MPa**.")
if __name__ == '__main__':
main() |