コード例 #1
0
def select_aggregate_method(dic, item_session_times_dic, session_item_data,
                            session_idx_item_prob_dic1,
                            session_idx_item_prob_dic2,
                            session_idx_item_prob_dic3, aggregate_method,
                            part_num):

    # 待输出到excel中的结果
    data = list()

    if aggregate_method == 1:
        print("aggregate1")
        # prob_aggregate1——“整合”每次浏览的结果
        session_item_prob_dic = prob_aggregate1(dic,
                                                session_idx_item_prob_dic1,
                                                item_session_times_dic)
        # p1 = evaluate(session_item_data, session_item_prob_dic)
        # data += ["", str('%.4f' % p1), ""]
        # 整合策略(整合出一个最有可能购买的商品)的评价指标只能用p@1
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate1(dic,
                                                session_idx_item_prob_dic2,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate1(dic,
                                                session_idx_item_prob_dic3,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 2:
        print("aggregate2")
        # prob_aggregate2——“整合”每次浏览的结果
        session_item_prob_dic = prob_aggregate2(dic,
                                                session_idx_item_prob_dic1,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate2(dic,
                                                session_idx_item_prob_dic2,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate2(dic,
                                                session_idx_item_prob_dic3,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 3:
        print("aggregate3")
        # prob_aggregate3——“整合”每次浏览的结果
        session_item_prob_dic = prob_aggregate3(dic,
                                                session_idx_item_prob_dic1,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate3(dic,
                                                session_idx_item_prob_dic2,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate3(dic,
                                                session_idx_item_prob_dic3,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 4:
        print("aggregate4")
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = prob_aggregate4(dic,
                                                session_idx_item_prob_dic1,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate4(dic,
                                                session_idx_item_prob_dic2,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = prob_aggregate4(dic,
                                                session_idx_item_prob_dic3,
                                                item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 5:
        print("aggregate", str(aggregate_method))
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = aggregation.aggregate5(
            dic, session_idx_item_prob_dic1, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate5(
            dic, session_idx_item_prob_dic2, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate5(
            dic, session_idx_item_prob_dic3, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 6:
        print("aggregate", str(aggregate_method))
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = aggregation.aggregate6(
            dic, session_idx_item_prob_dic1, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate6(
            dic, session_idx_item_prob_dic2, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate6(
            dic, session_idx_item_prob_dic3, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 7:
        print("aggregate", str(aggregate_method))
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = aggregation.aggregate7(
            dic, session_idx_item_prob_dic1, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate7(
            dic, session_idx_item_prob_dic2, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate7(
            dic, session_idx_item_prob_dic3, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 8:
        print("aggregate", str(aggregate_method))
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = aggregation.aggregate8(
            dic, session_idx_item_prob_dic1, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate8(
            dic, session_idx_item_prob_dic2, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate8(
            dic, session_idx_item_prob_dic3, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    elif aggregate_method == 9:
        print("aggregate", str(aggregate_method))
        # prob_aggregate4——“整合”每次浏览的结果
        session_item_prob_dic = aggregation.aggregate9(
            dic, session_idx_item_prob_dic1, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate9(
            dic, session_idx_item_prob_dic2, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]

        session_item_prob_dic = aggregation.aggregate9(
            dic, session_idx_item_prob_dic3, item_session_times_dic)
        precision = Evaluation.calc_precision_at_n(session_item_data,
                                                   session_item_prob_dic, 1)
        data += ["", str('%.4f' % precision), ""]
    else:
        print("select_aggregate_method parameter error!")
        exit()

    return data