Sowmith22's picture
Update app.py
ec49abe verified
raw
history blame
6.22 kB
import pandas as pd
import streamlit as st
import warnings
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.")