Sowmith22's picture
Update app.py
1886f78 verified
raw
history blame
6.27 kB
import pandas as pd
import streamlit as st
import warnings
import numpy as np
import matplotlib.pyplot as plt
warnings.filterwarnings("ignore")
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
import matplotlib.pyplot as plt
# Load dataset
df=pd.read_csv(r"data.csv")
import streamlit as st
st.markdown(
"""
<style>
.stApp {
background-color: #e3f2fd; /* Try sky blue or another color */
padding: 12px;
}
</style>
""",
unsafe_allow_html=True
)
st.markdown("## πŸš— Vehicle Brake System Fault Detection")
st.markdown("#### Enter Brake Sensor Values to Predict Any System Fault")
### filling the mising values
df["Brake_Pressure"] = df["Brake_Pressure"].fillna(df["Brake_Pressure"].mean())
df["Pad_Wear_Level"] = df["Pad_Wear_Level"].fillna(df["Pad_Wear_Level"].mean())
df["ABS_Status"] = df["ABS_Status"].fillna(df["ABS_Status"].mean())
df["Wheel_Speed_FL"] = df["Wheel_Speed_FL"].fillna(df["Wheel_Speed_FL"].mean())
df["Wheel_Speed_FR"] = df["Wheel_Speed_FR"].fillna(df["Wheel_Speed_FR"].mean())
df["Wheel_Speed_RL"] = df["Wheel_Speed_RL"].fillna(df["Wheel_Speed_RL"].mean())
df["Wheel_Speed_RR"] = df["Wheel_Speed_RR"].fillna(df["Wheel_Speed_RR"].mean())
df["Fluid_Temperature"] = df["Fluid_Temperature"].fillna(df["Fluid_Temperature"].mean())
df["Pedal_Position"] = df["Pedal_Position"].fillna(df["Pedal_Position"].mean())
# Prepare data
x=df.drop("Fault",axis=1)
y=df["Fault"]
Brake_Pressure = st.slider("πŸ’¨ Brake Pressure (psi)", min_value=50.0, max_value=500.0, step=0.1)
Pad_Wear_Level = st.slider("πŸ›ž Pad Wear Level (%)", min_value=0.0, max_value=100.0, step=0.1)
ABS_Status = st.slider("πŸ›‘ ABS Status (0 = Off, 1 = On)", min_value=0, max_value=1, step=1)
Wheel_Speed_FL = st.slider("βš™οΈ Wheel Speed FL (km/h)", min_value=0.0, max_value=400.0, step=0.1)
Wheel_Speed_FR = st.slider("βš™οΈ Wheel Speed FR (km/h)", min_value=0.0, max_value=400.0, step=0.1)
Wheel_Speed_RL = st.slider("βš™οΈ Wheel Speed RL (km/h)", min_value=0.0, max_value=300.0, step=0.1)
Wheel_Speed_RR = st.slider("βš™οΈ Wheel Speed RR (km/h)", min_value=0.0, max_value=300.0, step=0.1)
Fluid_Temperature = st.slider("🌑️ Fluid Temperature (°C)", min_value=-20.0, max_value=150.0, step=0.1)
Pedal_Position = st.slider("🦢 Pedal Position (%)", min_value=0.0, max_value=100.0, step=0.1)
# Split and train
from sklearn.linear_model import LogisticRegression
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=29)
lr = LogisticRegression()
lr.fit(x_train,y_train)
y_pred=lr.predict(x_test)
print("accuracy_score:",accuracy_score(y_test,y_pred))
# User input DataFrame
user_data = pd.DataFrame([[Brake_Pressure, Pad_Wear_Level, ABS_Status, Wheel_Speed_FL , Wheel_Speed_FR,Wheel_Speed_RL,Wheel_Speed_RR,
Fluid_Temperature,Pedal_Position]],
columns=["Brake_Pressure", "Pad_Wear_Level", "ABS_Status", "Wheel_Speed_FL", "Wheel_Speed_FR",
"Wheel_Speed_RL","Wheel_Speed_RR","Fluid_Temperature","Pedal_Position"])
if st.button("πŸ” Predict Brake Fault"):
y_pred = lr.predict(user_data)
prob = lr.predict_proba(user_data)[0][1]
if y_pred[0] == 1:
st.error(f"🚨 Fault Detected in Brake System! (Confidence: {prob:.2%})")
st.subheader("πŸ” Identified Possible Issues:")
# Diagnosis based on user inputs
issues = []
if Brake_Pressure < 60 or Brake_Pressure > 130:
issues.append("πŸ”΄ **Abnormal Brake Pressure** β€” should be between 60 and 130. Check hydraulic pressure or brake fluid levels.")
if Pad_Wear_Level >= 80:
issues.append("🟠 **Brake Pads Critically Worn** β€” pad wear is above 80%. Immediate replacement recommended.")
elif Pad_Wear_Level >= 60:
issues.append("🟑 **Brake Pads Heavily Worn** β€” nearing replacement. Monitor closely.")
if ABS_Status == 0:
issues.append("πŸ”΅ **ABS System Not Active** β€” ABS is off or malfunctioning. This may reduce braking safety on wet or slippery roads.")
## for Wheel_Speed_FL
if Wheel_Speed_FL < 0 or Wheel_Speed_FL > 100:
issues.append("πŸ”΄ **Front Left Wheel Speed Abnormal** β€” value out of expected range (0–130 km/h). Check wheel sensor or brake system.")
# For Front Right Wheel
if Wheel_Speed_FR < 0 or Wheel_Speed_FR > 130:
issues.append("πŸ”΄ **Front Right Wheel Speed Abnormal** β€” out of expected range (0–130 km/h).")
# Rear Left
if Wheel_Speed_RL < 0 or Wheel_Speed_RL > 130:
issues.append("πŸ”΄ **Rear Left Wheel Speed Abnormal** β€” out of expected range (0–130 km/h).")
# Rear Right
if Wheel_Speed_RR < 0 or Wheel_Speed_RR > 130:
issues.append("πŸ”΄ **Rear Right Wheel Speed Abnormal** β€” out of expected range (0–130 km/h).")
## Fluid_Temperature
if Fluid_Temperature < -20 or Fluid_Temperature > 120:
issues.append("πŸ”₯ **Abnormal Brake Fluid Temperature** β€” should be between -20Β°C and 120Β°C. Check for overheating or freezing issues.")
# Moderate brake pedal press (between 20 and 60)
if 20 < Pedal_Position < 60:
issues.append("🟑 **Moderate Brake Pedal Pressed** β€” normal city or highway braking.")
# Hard/full brake press (between 60 and 100)
if 60 <= Pedal_Position <= 100:
issues.append("πŸ›‘ **Brake Pedal Fully Pressed** β€” full braking detected. If pressure or wheel speed is abnormal, check for faults.")
# Low or no brake engagement
if Pedal_Position <= 20:
issues.append("πŸ” **Low Brake Pedal Engagement** β€” either not braking or sensor reading may be inaccurate.")
if len(issues) > 0:
for issue in issues:
st.markdown(f"- {issue}")
else:
st.info("No specific fault signals from input values, but model still detected an issue. Please consult a technician.")
else:
st.success(f"βœ… No Fault Detected. (Confidence: {1 - prob:.2%})")
st.info("πŸš— Your vehicle's brake system appears healthy.")