Spaces:
Runtime error
Runtime error
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 * | |
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 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() |