Spaces:
Runtime error
Runtime error
import streamlit as st | |
from pages.admin_utils import * | |
from sklearn.svm import SVC | |
from sklearn.pipeline import make_pipeline | |
from sklearn.preprocessing import StandardScaler | |
import joblib | |
from pages.admin_utils import * | |
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!') |