|
import tensorflow as tf |
|
from tensorflow import keras |
|
import numpy as np |
|
import matplotlib.pyplot as plt |
|
import pandas as pd |
|
from sklearn.model_selection import train_test_split |
|
from sklearn import preprocessing |
|
import seaborn as sns |
|
from sklearn.preprocessing import LabelEncoder |
|
import streamlit as st |
|
|
|
st.title("Rouge Component Prediction") |
|
|
|
df = pd.read_csv('identify_rogue_50K_ALL.csv') |
|
print("Dataset Size:",df.shape) |
|
st.sidebar.header('Enter the Components Details here') |
|
|
|
df.drop(['SRU serial number','Date of Manufacture','Last Maintenance Date','date of last failure'], axis = 1, inplace=True) |
|
|
|
|
|
def user_report(): |
|
manufacturer = st.sidebar.selectbox("Manufacturer", |
|
("JKL Company", "GHI Company","AGS Company","ABC Company","XYZ Company" )) |
|
if manufacturer=='JKL Company': |
|
manufacturer=3 |
|
elif manufacturer=="GHI Company": |
|
manufacturer=2 |
|
elif manufacturer=="AGS Company": |
|
manufacturer=1 |
|
elif manufacturer=="ABC Company": |
|
manufacturer =0 |
|
else: |
|
manufacturer=4 |
|
component_age = st.sidebar.slider('Component Age (in hours)', 500,2000, 600 ) |
|
total_operating_hours = st.sidebar.slider('Total Operating Hours)', 50,2000, 500 ) |
|
usage_intensity = st.sidebar.slider('Usage Intensity hours/day', 0,9, 5 ) |
|
last_maintance_type = st.sidebar.selectbox('Last Mantainence Type', ("Preventive","Corrective") ) |
|
if last_maintance_type=="Preventive": |
|
last_maintance_type=1 |
|
else: |
|
last_maintance_type=0 |
|
previous_number_of_repairs = st.sidebar.number_input('Enter the Previous Number of Repairs Undergone 0 to 5 )',min_value=0,max_value=5,step=1) |
|
operating_temperature = st.sidebar.slider('Operating Temperature', 10,25, 15 ) |
|
humidity = st.sidebar.slider('Humidity', 20,105, 25 ) |
|
Vibration_Level = st.sidebar.slider('Vibration Level', 2,7, 2 ) |
|
Pressure = st.sidebar.slider('Pressure', 200,550, 250 ) |
|
Power_Input_Voltage= st.sidebar.slider('Power Input Voltage (V)',100,133,115) |
|
repair_type = st.sidebar.selectbox('Repair Type', ("Hardware","Software") ) |
|
if repair_type=='Hardware': |
|
repair_type=0 |
|
else: |
|
repair_type=1 |
|
number_of_inspection = st.sidebar.selectbox('Number of Inspections',('1','2')) |
|
if number_of_inspection=='1': |
|
number_of_inspection=1 |
|
else: |
|
number_of_inspection=2 |
|
number_of_inspection_6months = st.sidebar.selectbox('Number of Inspections in last 6 Months',('0','1')) |
|
if number_of_inspection_6months=='0': |
|
number_of_inspection_6months=0 |
|
else: |
|
number_of_inspection_6months=1 |
|
prior_maintainence = st.sidebar.selectbox('Prior Maintainence',("Regular","Irregular")) |
|
if prior_maintainence =='Regular': |
|
prior_maintainence=1 |
|
else: |
|
prior_maintainence=0 |
|
|
|
user_report_data = { |
|
'Manufacturer':manufacturer, |
|
'Component_Age':component_age, |
|
'Total Operating Hours':total_operating_hours, |
|
'Usage Intensity (hours/day)':usage_intensity, |
|
'Last Maintenance Type': last_maintance_type, |
|
'Previous number of repairs':previous_number_of_repairs, |
|
'Operating Temperature':operating_temperature, |
|
'Humidity': humidity, |
|
'Vibration Level':Vibration_Level, |
|
'Pressure':Pressure, |
|
'Power Input Voltage (V)':Power_Input_Voltage, |
|
'repair type':repair_type , |
|
'total number of inspection':number_of_inspection, |
|
'No. of Inspections in Last 6 Months':number_of_inspection_6months, |
|
'Prior Maintenance':prior_maintainence |
|
|
|
} |
|
report_data = pd.DataFrame(user_report_data, index=[0]) |
|
return report_data |
|
|
|
|
|
user_data = user_report() |
|
st.header("Component Details") |
|
st.write(user_data) |
|
|
|
def label_encoder(df): |
|
le = LabelEncoder() |
|
cat = df.select_dtypes(include='O').keys() |
|
categ = list(cat) |
|
df[categ] = df[categ].apply(le.fit_transform) |
|
return df |
|
|
|
def preprocess_dataset(X): |
|
x = X.values |
|
min_max_scaler = preprocessing.MinMaxScaler() |
|
x_scaled = min_max_scaler.fit_transform(x) |
|
X_df = pd.DataFrame(x_scaled) |
|
return X_df |
|
|
|
def prediction(df): |
|
|
|
|
|
|
|
|
|
|
|
X_test_encoded = label_encoder(df) |
|
X_test_df = preprocess_dataset(X_test_encoded) |
|
|
|
|
|
try: |
|
x_model = tf.keras.models.load_model('my_model.h5') |
|
except (OSError, ValueError): |
|
|
|
tfs_layer = tf.keras.layers.TFSMLayer('my_model', call_endpoint='serving_default') |
|
|
|
inputs = tf.keras.Input(shape=(X_test_df.shape[1],)) |
|
outputs = tfs_layer(inputs) |
|
x_model = tf.keras.Model(inputs=inputs, outputs=outputs) |
|
y_pred = x_model.predict(X_test_df) |
|
|
|
|
|
if y_pred ==0: |
|
return 'Component is Good' |
|
else: |
|
return 'Component is not Good' |
|
|
|
|
|
|
|
|
|
|
|
y_pred = prediction(user_data) |
|
|
|
if st.button("Predict"): |
|
st.subheader(y_pred) |