Priyanka-Kumavat-At-TE's picture
Update app.py
b9df7d8
raw history blame
No virus
5.53 kB
# import os
# import sys
# from random import randint
# import time
# import uuid
# import argparse
# import streamlit as st
# sys.path.append(os.path.abspath("../supv"))
# from matumizi.util import *
# from mcclf import *
import os
import sys
from random import randint
import time
import uuid
import argparse
import pandas as pd
import streamlit as st
# Add the directory containing the required modules to sys.path
sys.path.append(os.path.abspath("../supv"))
from matumizi.util import *
from mcclf import *
def genVisitHistory(numUsers, convRate, label):
for i in range(numUsers):
userID = genID(12)
userSess = []
userSess.append(userID)
conv = randint(0, 100)
if (conv < convRate):
#converted
if (label):
if (randint(0,100) < 90):
userSess.append("T")
else:
userSess.append("F")
numSession = randint(2, 20)
for j in range(numSession):
sess = randint(0, 100)
if (sess <= 15):
elapsed = "H"
elif (sess > 15 and sess <= 40):
elapsed = "M"
else:
elapsed = "L"
sess = randint(0, 100)
if (sess <= 15):
duration = "L"
elif (sess > 15 and sess <= 40):
duration = "M"
else:
duration = "H"
sessSummary = elapsed + duration
userSess.append(sessSummary)
else:
#not converted
if (label):
if (randint(0,100) < 90):
userSess.append("F")
else:
userSess.append("T")
numSession = randint(2, 12)
for j in range(numSession):
sess = randint(0, 100)
if (sess <= 20):
elapsed = "L"
elif (sess > 20 and sess <= 45):
elapsed = "M"
else:
elapsed = "H"
sess = randint(0, 100)
if (sess <= 20):
duration = "H"
elif (sess > 20 and sess <= 45):
duration = "M"
else:
duration = "L"
sessSummary = elapsed + duration
userSess.append(sessSummary)
print(",".join(userSess))
# def trainModel(mlfpath):
# model = MarkovChainClassifier(mlfpath)
# model.train()
# def predictModel(mlfpath):
# model = MarkovChainClassifier(mlfpath)
# model.predict()
def trainModel(mlfpath):
model = MarkovChainClassifier(mlfpath)
model.train()
return model
def predictModel(mlfpath, userID):
model = MarkovChainClassifier(mlfpath)
res = model.predict(userID)
return res
if op == "Predict":
st.write("Enter the parameters to make a prediction:")
userID = st.text_input("User ID")
st.write("Click the button below to make a prediction")
if st.button("Predict"):
prediction = predictModel(mlfpath, userID)
st.write("Prediction:", prediction)
# if __name__ == "__main__":
# st.title("Conversion Prediction App")
# st.write("Welcome to the Conversion Prediction App. This app uses a Markov chain based classifier to predict whether a customer will convert or not based on their visit history.")
# op = st.sidebar.selectbox("Select Operation", ["Generate Visit History", "Train Model", "Predict"])
# if op == "Generate Visit History":
# st.write("Enter the parameters to generate the visit history:")
# numUsers = st.number_input("Number of users", min_value=1, max_value=1000, value=100, step=1)
# convRate = st.number_input("Conversion Rate (in percentage)", min_value=0, max_value=100, value=10, step=1)
# label = st.checkbox("Add Labels")
# st.write("Click the button below to generate the visit history")
# if st.button("Generate"):
# genVisitHistory(numUsers, convRate, label)
# elif op == "Train Model":
# st.write("Train the model using the following parameters:")
# mlfpath = st.text_input("MLF Path")
# if st.button("Train"):
# trainModel(mlfpath)
# elif op == "Predict":
# st.write("Predict using the trained model:")
# mlfpath = st.text_input("MLF Path")
# userID = st.text_input("User ID")
# if st.button("Predict"):
# result = predictModel(mlfpath, userID)
# st.write("Prediction Result: ", result)
# def main():
# st.title("Markov Chain Classifier")
# # Add input fields for command line arguments
# op = st.selectbox("Operation", ["gen", "train", "pred"])
# numUsers = st.slider("Number of Users", 1, 1000, 100)
# convRate = st.slider("Conversion Rate", 1, 100, 10)
# label = st.checkbox("Add Label")
# mlfpath = st.text_input("ML Config File Path", value="false")
# # Call functions based on selected operation
# if op == "gen":
# st.button("Generate Visit History", on_click=lambda: genVisitHistory(numUsers, convRate, label))
# elif op == "train":
# st.button("Train Model", on_click=lambda: trainModel(mlfpath))
# elif op == "pred":
# st.button("Predict Model", on_click=lambda: predictModel(mlfpath))
# if __name__ == "__main__":
# main()