| | 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 Model") |
| | |
| | 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","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 = df.loc[:,df.columns!= "Rogue LRU/SRU (Target)"] |
| | y = df["Rogue LRU/SRU (Target)"] |
| | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) |
| | print(X_train.shape) |
| | print(X_test.shape) |
| | X_test_encoded = label_encoder(X_test) |
| | X_test_df = preprocess_dataset(X_test_encoded) |
| | x_model = loaded_model = tf.keras.models.load_model('my_model') |
| | y_pred = x_model.predict(X_test_df) |
| | predicition = [] |
| | for i in list(y_pred): |
| | if i[0]<=0.8: |
| | predicition.append(0) |
| | else: |
| | predicition.append(1) |
| | X_test['Actual_time_to_repair'] = y_test |
| | X_test['Predicted_time_to_repair'] = predicition |
| | |
| | print(X_test.head()) |
| | prediction(df) |