Customer-Conversion-Prediction / visit_history.py
Priyanka-Kumavat-At-TE's picture
Upload 7 files
dfcdf7b
raw
history blame
3.21 kB
#!/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)")