#!/usr/bin/env python # coding: utf-8 # In[ ]: import os import sys from random import randint import time import uuid import argparse 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)) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--op', type=str, default = "none", help = "operation") parser.add_argument('--nuser', type=int, default = 100, help = "num of users") parser.add_argument('--crate', type=int, default = 10, help = "concersion rate") parser.add_argument('--label', type=str, default = "false", help = "whether to add label") parser.add_argument('--mlfpath', type=str, default = "false", help = "ml config file") args = parser.parse_args() op = args.op if op == "gen": numUsers = args.nuser convRate = args.crate label = args.label == "true" genVisitHistory(numUsers, convRate, label) elif op == "train": model = MarkovChainClassifier(args.mlfpath) model.train() elif op == "pred": model = MarkovChainClassifier(args.mlfpath) model.predict() else: exitWithMsg("invalid command)")