gutai123's picture
Rename app.py to create_ml_model.py
b1fe784 verified
raw
history blame
3.82 kB
import streamlit as st
from admin_utils import *
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
import joblib
if 'cleaned_data' not in st.session_state:
st.session_state['cleaned_data'] =''
if 'sentences_train' not in st.session_state:
st.session_state['sentences_train'] =''
if 'sentences_test' not in st.session_state:
st.session_state['sentences_test'] =''
if 'labels_train' not in st.session_state:
st.session_state['labels_train'] =''
if 'labels_test' not in st.session_state:
st.session_state['labels_test'] =''
if 'svm_classifier' not in st.session_state:
st.session_state['svm_classifier'] =''
st.title("Let's build our Model...")
# Create tabs
tab_titles = ['Data Preprocessing', 'Model Training', 'Model Evaluation',"Save Model"]
tabs = st.tabs(tab_titles)
# Adding content to each tab
#Data Preprocessing TAB...
with tabs[0]:
st.header('Data Preprocessing')
st.write('Here we preprocess the data...')
# Capture the CSV file
data = st.file_uploader("Upload CSV file",type="csv")
button = st.button("Load data",key="data")
if button:
with st.spinner('Wait for it...'):
our_data=read_data(data)
embeddings=get_embeddings()
st.session_state['cleaned_data'] = create_embeddings(our_data,embeddings)
st.success('Done!')
#Model Training TAB
with tabs[1]:
st.header('Model Training')
st.write('Here we train the model...')
button = st.button("Train model",key="model")
if button:
with st.spinner('Wait for it...'):
st.session_state['sentences_train'], st.session_state['sentences_test'], st.session_state['labels_train'], st.session_state['labels_test']=split_train_test__data(st.session_state['cleaned_data'])
# Initialize a support vector machine, with class_weight='balanced' because
# our training set has roughly an equal amount of positive and negative
# sentiment sentences
st.session_state['svm_classifier'] = make_pipeline(StandardScaler(), SVC(class_weight='balanced'))
# fit the support vector machine
st.session_state['svm_classifier'].fit(st.session_state['sentences_train'], st.session_state['labels_train'])
st.success('Done!')
#Model Evaluation TAB
with tabs[2]:
st.header('Model Evaluation')
st.write('Here we evaluate the model...')
button = st.button("Evaluate model",key="Evaluation")
if button:
with st.spinner('Wait for it...'):
accuracy_score=get_score(st.session_state['svm_classifier'],st.session_state['sentences_test'],st.session_state['labels_test'])
st.success(f"Validation accuracy is {100*accuracy_score}%!")
st.write("A sample run:")
#text="lack of communication regarding policy updates salary, can we please look into it?"
text="Rude driver with scary driving"
st.write("***Our issue*** : "+text)
#Converting out TEXT to NUMERICAL representaion
embeddings= get_embeddings()
query_result = embeddings.embed_query(text)
#Sample prediction using our trained model
result= st.session_state['svm_classifier'].predict([query_result])
st.write("***Department it belongs to*** : "+result[0])
st.success('Done!')
#Save model TAB
with tabs[3]:
st.header('Save model')
st.write('Here we save the model...')
button = st.button("Save model",key="save")
if button:
with st.spinner('Wait for it...'):
joblib.dump(st.session_state['svm_classifier'], 'modelsvm.pk1')
st.success('Done!')