harikrishna1985's picture
Upload app.py with huggingface_hub
8f12cdd verified
import streamlit as st
import pandas as pd
import yaml
from src.predict import predict_input
def load_config():
with open("config/config.yaml", "r", encoding="utf-8") as f:
return yaml.safe_load(f)
config = load_config()
TITLE = config["app"]["title"]
SUBTITLE = config["app"]["subtitle"]
NOTE = config["app"]["threshold_note"]
INPUT_COLUMNS = config["features"]["input_columns"]
st.set_page_config(page_title=TITLE, layout="centered")
st.title(TITLE)
st.subheader(SUBTITLE)
st.info(NOTE)
st.markdown("### Enter Sensor Values")
inputs = {}
default_values = {
"engine_rpm": 1500.0,
"lub_oil_pressure": 45.0,
"fuel_pressure": 55.0,
"coolant_pressure": 35.0,
"lub_oil_temp": 80.0,
"coolant_temp": 85.0,
}
for col in INPUT_COLUMNS:
label = col.replace("_", " ").title()
inputs[col] = st.number_input(
label,
min_value=0.0,
value=float(default_values.get(col, 0.0))
)
if st.button("Predict"):
try:
input_df = pd.DataFrame([inputs])
st.markdown("### Input DataFrame")
st.dataframe(input_df)
result = predict_input(input_df)
st.markdown("### Prediction Result")
prediction = int(result["prediction"])
label_map = {
0: "Healthy",
1: "Needs Maintenance"
}
label = label_map.get(prediction, str(prediction))
if prediction == 0:
st.success(f"Engine Condition: {label}")
else:
st.error(f"Engine Condition: {label}")
if "probabilities" in result:
st.markdown("### Prediction Probabilities")
prob_df = pd.DataFrame(
[result["probabilities"]],
columns=[f"Class {i}" for i in range(len(result["probabilities"]))]
)
st.dataframe(prob_df)
st.markdown("### Model-Ready Features")
st.json(result["processed_input"])
except Exception as e:
st.error(f"Error during prediction: {str(e)}")
st.markdown("---")
st.markdown("This tool is for decision support only. Always validate predictions with expert inspection.")