Пример #1
0
def baseline_demo(info):
    fout_baseline = open(info.fname_baseline, 'w')
    fout_q = open(info.fname_baseline_q, 'w')
    fout_w = open(info.fname_baseline_w, 'w')
    w, winAuctions, winbid, losebid = getTrainData_b(info.fname_trainlog,
                                                     info.fname_trainbid)
    print "trainData read success."
    wt = getTestData_b(info.fname_testlog)
    print "testData read success."

    # get priceSet
    wcount = [0] * UPPER
    if info.mode == NORMAL or info.mode == SURVIVAL:
        for i in range(0, len(winAuctions)):
            if winAuctions[i] == 1:
                wcount[w[i]] += 1
    if info.mode == FULL:
        for i in range(0, len(winAuctions)):
            wcount[w[i]] += 1

    minPrice = 0
    maxPrice = UPPER

    q = calProbDistribution(wcount, winbid, losebid, minPrice, maxPrice, info)
    w = q2w(q)
    print "q calculation success."

    if len(q) != 0:
        fout_q.write(str(q[0]))
        for i in range(1, len(q)):
            fout_q.write(' ' + str(q[i]))
    fout_q.close()
    if len(w) != 0:
        fout_w.write(str(w[0]))
        for i in range(1, len(w)):
            fout_w.write(' ' + str(w[i]))
    fout_w.close()

    # n calculation
    priceSet = wt
    minPrice = 0
    maxPrice = max(priceSet)
    n = [0.] * UPPER
    for i in range(0, len(priceSet)):
        pay_price = priceSet[i]
        n[pay_price] += 1
    print "n calculation success."

    # qt,wt calculation
    qt = calProbDistribution_n(n, minPrice, maxPrice, info)
    wt = q2w(qt)

    # evaluation
    # ANLP
    fout_baseline.write("baseline campaign " + str(info.campaign) + " mode " +
                        MODE_NAME_LIST[info.mode] + " basebid " +
                        info.basebid + '\n')
    fout_baseline.write("laplace " + str(info.laplace) + "\n")
    print "baseline campaign " + str(
        info.campaign) + " mode " + MODE_NAME_LIST[
            info.mode] + " basebid " + info.basebid
    print "laplace " + str(info.laplace)
    for step in STEP_LIST:
        qi = changeBucketUniform(q, step)
        ni = deepcopy(n)
        bucket = len(qi)
        anlp, N = getANLP(qi, ni, minPrice, maxPrice)

        fout_baseline.write("bucket " + str(bucket) + " step " + str(step) +
                            "\n")
        fout_baseline.write("Average negative log probability = " + str(anlp) +
                            "  N = " + str(N) + "\n")
        print "bucket " + str(bucket) + " step " + str(step)
        print "Average negative log probability = " + str(
            anlp) + "  N = " + str(N)

    # KLD & pearsonr
    bucket = len(q)
    step = STEP_LIST[0]
    KLD = KLDivergence(q, qt)
    N = sum(n)
    fout_baseline.write("bucket " + str(bucket) + " step " + str(step) + "\n")
    fout_baseline.write("KLD = " + str(KLD) + "  N = " + str(N) + "\n")
    print "bucket " + str(bucket) + " step " + str(step)
    print "KLD = " + str(KLD) + "  N = " + str(N)

    fout_baseline.close()
    fout_q.close()
    fout_w.close()

    return q, w
Пример #2
0
def baseline_kdd15_Rversion0(info):
    w = []
    for day in DAY_LIST:
        tmpw = getWinningPrice(info.fname_trainlog+day+'.txt')
        w.extend(tmpw)
    wt = getTestData_yzx(info.fname_testlog)

    # q calculation
    q = getQ(w,info)
    w = q2w(q)
    fout_q = open(info.fname_baseline_kdd15_q,'w')
    fout_w = open(info.fname_baseline_kdd15_w,'w')
    if len(q)!=0:
        fout_q.write(str(q[0]))
        for i in range(1,len(q)):
            fout_q.write(' '+str(q[i]))
    fout_q.close()
    if len(w)!=0:
        fout_w.write(str(w[0]))
        for i in range(1,len(w)):
            fout_w.write(' '+str(w[i]))
    fout_w.close()

    # n calculation
    print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),"n calculation begins."
    minPrice = 0
    maxPrice = max(wt)
    n = [0.]*UPPER
    for pay_price in wt:
        n[pay_price] += 1

    # qt,wt calculation
    qt = calProbDistribution_n(n,minPrice,maxPrice,info)
    wt = q2w(qt)

    # evaluation
    fout_baseline_kdd15 = open(info.fname_baseline_kdd15,'w')
    fout_baseline_kdd15.write("baseline_kdd15 campaign "+str(info.campaign)+" basebid "+info.basebid+'\n')
    print "baseline campaign "+str(info.campaign)+" basebid "+info.basebid
    for step in STEP_LIST:
        qi = changeBucketUniform(q,step)
        ni = deepcopy(n)
        bucket = len(qi)
        anlp,N = getANLP(qi,ni,minPrice,maxPrice)

        fout_baseline_kdd15.write("bucket "+str(bucket)+" step "+str(step)+"\n")
        fout_baseline_kdd15.write("Average negative log probability = "+str(anlp)+"  N = "+str(N)+"\n")
        print "bucket "+str(bucket)+" step "+str(step)
        print "Average negative log probability = "+str(anlp)+"  N = "+str(N)

    # KLD
    bucket = len(q)
    step = STEP_LIST[0]
    KLD = KLDivergence(q,qt)
    N = sum(n)
    fout_baseline_kdd15.write("bucket "+str(bucket)+" step "+str(step)+"\n")
    fout_baseline_kdd15.write("KLD = "+str(KLD)+"  N = "+str(N)+"\n")
    print "bucket "+str(bucket)+" step "+str(step)
    print "KLD = "+str(KLD)+"  N = "+str(N)

    fout_baseline_kdd15.close()
    fout_q.close()
    fout_w.close()

    return q,w
def baseline_kdd15_Rversion0(info):
    w = []
    for day in DAY_LIST:
        tmpw = getWinningPrice(info.fname_trainlog + day + '.txt')
        w.extend(tmpw)
    wt, ground_truth, bt = getTestData_yzbx(info.fname_testlog)

    # q calculation
    q = getQ(w, info)
    w = q2w(q)
    fout_q = open(info.fname_baseline_kdd15_q, 'w')
    fout_w = open(info.fname_baseline_kdd15_w, 'w')
    if len(q) != 0:
        fout_q.write(str(q[0]))
        for i in range(1, len(q)):
            fout_q.write(' ' + str(q[i]))
    fout_q.close()
    if len(w) != 0:
        fout_w.write(str(w[0]))
        for i in range(1, len(w)):
            fout_w.write(' ' + str(w[i]))
    fout_w.close()

    # n calculation
    print time.strftime('%Y-%m-%d %H:%M:%S',
                        time.localtime(time.time())), "n calculation begins."
    minPrice = 0
    maxPrice = max(wt)
    maxPriceB = max(bt)

    n = [0.] * UPPER
    for i in range(len(wt)):
        pay_price = wt[i]
        n[pay_price] += 1

    nb = [0.] * UPPER
    g = {}
    for i in range(len(bt)):
        pay_price = bt[i]
        nb[pay_price] += 1
        if not g.has_key(pay_price):
            g[pay_price] = [ground_truth[i]]
        else:
            g[pay_price].append(ground_truth[i])

    # qt,wt calculation
    qt = calProbDistribution_n(n, minPrice, maxPrice, info)
    wt = q2w(qt)

    qb = calProbDistribution_n(nb, minPrice, maxPriceB, info)
    wb = q2w(qb)

    # evaluation
    fout_baseline_kdd15 = open(info.fname_baseline_kdd15, 'w')
    fout_baseline_kdd15.write("baseline_kdd15 campaign " + str(info.campaign) +
                              " basebid " + info.basebid + '\n')
    print "baseline campaign " + str(
        info.campaign) + " basebid " + info.basebid
    for step in STEP_LIST:
        qi = changeBucketUniform(q, step)
        ni = deepcopy(n)
        bucket = len(qi)
        anlp, N = getANLP(qi, ni, minPrice, maxPrice)
        auc, cross = getAUC_CROSS(wb, g)

        fout_baseline_kdd15.write("bucket " + str(bucket) + " step " +
                                  str(step) + "\n")
        fout_baseline_kdd15.write("Average negative log probability = " +
                                  str(anlp) + "  N = " + str(N) + "\n")
        fout_baseline_kdd15.write("AUC = " + str(auc) + "\n")
        fout_baseline_kdd15.write("CROSS = " + str(cross) + "\n")
        print "bucket " + str(bucket) + " step " + str(step)
        print "Average negative log probability = " + str(
            anlp) + "  N = " + str(N)
        print "AUC = " + str(auc)
        print "CROSS = " + str(cross)

    # KLD
    bucket = len(q)
    step = STEP_LIST[0]
    KLD = KLDivergence(q, qt)
    N = sum(n)
    fout_baseline_kdd15.write("bucket " + str(bucket) + " step " + str(step) +
                              "\n")
    fout_baseline_kdd15.write("KLD = " + str(KLD) + "  N = " + str(N) + "\n")
    print "bucket " + str(bucket) + " step " + str(step)
    print "KLD = " + str(KLD) + "  N = " + str(N)

    fout_baseline_kdd15.close()
    fout_q.close()
    fout_w.close()

    return q, w
Пример #4
0
def baseline_kdd15_Rversion0(info):
    w = []
    for day in DAY_LIST:
        tmpw = getWinningPrice(info.fname_trainlog + day + '.txt')
        w.extend(tmpw)
    wt = getTestData_yzx(info.fname_testlog)

    # q calculation
    q = getQ(w, info)
    w = q2w(q)
    fout_q = open(info.fname_baseline_kdd15_q, 'w')
    fout_w = open(info.fname_baseline_kdd15_w, 'w')
    if len(q) != 0:
        fout_q.write(str(q[0]))
        for i in range(1, len(q)):
            fout_q.write(' ' + str(q[i]))
    fout_q.close()
    if len(w) != 0:
        fout_w.write(str(w[0]))
        for i in range(1, len(w)):
            fout_w.write(' ' + str(w[i]))
    fout_w.close()

    # n calculation
    print time.strftime('%Y-%m-%d %H:%M:%S',
                        time.localtime(time.time())), "n calculation begins."
    minPrice = 0
    maxPrice = max(wt)
    n = [0.] * UPPER
    for pay_price in wt:
        n[pay_price] += 1

    # qt,wt calculation
    qt = calProbDistribution_n(n, minPrice, maxPrice, info)
    wt = q2w(qt)

    # evaluation
    fout_baseline_kdd15 = open(info.fname_baseline_kdd15, 'w')
    fout_baseline_kdd15.write("baseline_kdd15 campaign " + str(info.campaign) +
                              " basebid " + info.basebid + '\n')
    print "baseline campaign " + str(
        info.campaign) + " basebid " + info.basebid
    for step in STEP_LIST:
        qi = changeBucketUniform(q, step)
        ni = deepcopy(n)
        bucket = len(qi)
        anlp, N = getANLP(qi, ni, minPrice, maxPrice)

        fout_baseline_kdd15.write("bucket " + str(bucket) + " step " +
                                  str(step) + "\n")
        fout_baseline_kdd15.write("Average negative log probability = " +
                                  str(anlp) + "  N = " + str(N) + "\n")
        print "bucket " + str(bucket) + " step " + str(step)
        print "Average negative log probability = " + str(
            anlp) + "  N = " + str(N)

    # KLD
    bucket = len(q)
    step = STEP_LIST[0]
    KLD = KLDivergence(q, qt)
    N = sum(n)
    fout_baseline_kdd15.write("bucket " + str(bucket) + " step " + str(step) +
                              "\n")
    fout_baseline_kdd15.write("KLD = " + str(KLD) + "  N = " + str(N) + "\n")
    print "bucket " + str(bucket) + " step " + str(step)
    print "KLD = " + str(KLD) + "  N = " + str(N)

    fout_baseline_kdd15.close()
    fout_q.close()
    fout_w.close()

    return q, w
Пример #5
0
def baseline(info):
    fout_baseline = open(info.fname_baseline,'w')
    fout_q = open(info.fname_baseline_q,'w')
    fout_w = open(info.fname_baseline_w,'w')
    w,winAuctions,winbid,losebid = getTrainData_b(info.fname_trainlog,info.fname_trainbid)
    print "trainData read success."
    wt = getTestData_b(info.fname_testlog)
    print "testData read success."

    # get priceSet
    wcount = [0]*UPPER
    if info.mode==NORMAL or info.mode==SURVIVAL:
        for i in range(0,len(winAuctions)):
            if winAuctions[i]==1:
                wcount[w[i]] += 1
    if info.mode==FULL :
        for i in range(0,len(winAuctions)):
            wcount[w[i]] += 1

    minPrice = 0
    maxPrice = UPPER

    q = calProbDistribution(wcount,winbid,losebid,minPrice,maxPrice,info)
    w = q2w(q)
    print "q calculation success."

    if len(q)!=0:
        fout_q.write(str(q[0]))
        for i in range(1,len(q)):
            fout_q.write(' '+str(q[i]))
    fout_q.close()
    if len(w)!=0:
        fout_w.write(str(w[0]))
        for i in range(1,len(w)):
            fout_w.write(' '+str(w[i]))
    fout_w.close()

    # n calculation
    priceSet = wt
    minPrice = 0
    maxPrice = max(priceSet)
    n = [0.]*UPPER
    for i in range(0,len(priceSet)):
        pay_price = priceSet[i]
        n[pay_price] += 1
    print "n calculation success."

    # qt,wt calculation
    qt = calProbDistribution_n(n,minPrice,maxPrice,info)
    wt = q2w(qt)

    # evaluation
    # ANLP
    fout_baseline.write("baseline campaign "+str(info.campaign)+" mode "+MODE_NAME_LIST[info.mode]+" basebid "+info.basebid+'\n')
    fout_baseline.write("laplace "+str(info.laplace)+"\n")
    print "baseline campaign "+str(info.campaign)+" mode "+MODE_NAME_LIST[info.mode]+" basebid "+info.basebid
    print "laplace "+str(info.laplace)
    for step in STEP_LIST:
        qi = changeBucketUniform(q,step)
        ni = deepcopy(n)
        bucket = len(qi)
        anlp,N = getANLP(qi,ni,minPrice,maxPrice)

        fout_baseline.write("bucket "+str(bucket)+" step "+str(step)+"\n")
        fout_baseline.write("Average negative log probability = "+str(anlp)+"  N = "+str(N)+"\n")
        print "bucket "+str(bucket)+" step "+str(step)
        print "Average negative log probability = "+str(anlp)+"  N = "+str(N)

    # KLD & pearsonr
    bucket = len(q)
    step = STEP_LIST[0]
    KLD = KLDivergence(q,qt)
    N = sum(n)
    fout_baseline.write("bucket "+str(bucket)+" step "+str(step)+"\n")
    fout_baseline.write("KLD = "+str(KLD)+"  N = "+str(N)+"\n")
    print "bucket "+str(bucket)+" step "+str(step)
    print "KLD = "+str(KLD)+"  N = "+str(N)

    fout_baseline.close()
    fout_q.close()
    fout_w.close()

    return q,w