Exemplo n.º 1
0
def run(filename):
    w_a1 = 0.90291
    w_xy_rt = 0.010809
    w_z1 = 0.357996
    w_z2 = 0.229602
    c_rt1 = 1.330075
    c_rt2 = 1.92522

    model = models.UnrollingHelicesRt2(
        dbscan_features=["sina1", "cosa1", "z1", "z2", "x_rt", "y_rt"],
        dbscan_weight=[w_a1, w_a1, w_z1, w_z2, w_xy_rt, w_xy_rt])
    model.coef_rt1 = c_rt1
    model.coef_rt2 = c_rt2
    model.niter = 150
    path_to_input = os.path.join(path_to_trackml, "test")
    dataset_submission = []
    for event_id, hits in load_dataset(path_to_input, parts=["hits"]):

        labels = model.predict(hits)

        one_submission = create_one_event_submission(event_id, hits, labels)

        dataset_submission.append(one_submission)

    submission = pd.concat(dataset_submission)
    submission.to_csv(filename, index=None)
Exemplo n.º 2
0
def run(filename):
    model = models.UnrollingHelicesRt2(
        dbscan_features=["sina1", "cosa1", "z1", "z2", "x_rt", "y_rt"],
        dbscan_weight=[1.0, 1.0, 0.75, 0.2, 0.05, 0.05])
    model.niter = 150
    path_to_input = os.path.join(path_to_trackml, "train_1")
    for event_id, hits, truth in load_dataset(path_to_input,
                                              parts=["hits", "truth"],
                                              skip=0,
                                              nevents=1):

        def Fun4BO(w_a1, w_z1, w_z2, w_xy_rt, c_rt1, c_rt2):
            model.dbscan_weight[0] = w_a1
            model.dbscan_weight[1] = w_a1
            model.dbscan_weight[2] = w_z1
            model.dbscan_weight[3] = w_z2
            model.dbscan_weight[4] = w_xy_rt
            model.dbscan_weight[5] = w_xy_rt
            model.coef_rt1 = c_rt1
            model.coef_rt2 = c_rt2
            labels = model.predict(hits)
            one_submission = create_one_event_submission(
                event_id, hits, labels)
            score = score_event(truth, one_submission)
            return score

        print("Bayesian Optimization")
        opt = BayesianOptimization(Fun4BO, {
            "w_a1": (0.9, 1.2),
            "w_z1": (0.3, 0.7),
            "w_z2": (0.1, 0.4),
            "w_xy_rt": (0.01, 0.2),
            "c_rt1": (0.5, 1.5),
            "c_rt2": (0.1, 5.0)
        },
                                   verbose=True)
        opt.maximize(
            init_points=3,
            n_iter=100,  #
            acq="ucb",
            kappa=2.576)

        # [string]
        labels = opt.res["max"]["max_params"].keys()
        # [dict(string, [float])]
        params = opt.res["all"]["params"]
        len_params = len(params)

        data_dic = {}

        for label in labels:
            val = [opt.res["max"]["max_params"][label]]
            for i in range(len_params):
                val.append(params[i][label])
                data_dic[label] = val
        data_dic["value"] = [opt.res["max"]["max_val"]
                             ] + opt.res["all"]["values"]
        data_dic["label"] = ["max"] + [str(x) for x in range(len_params)]
        df = pd.DataFrame(data_dic)
        df.to_csv(filename, index=None)
Exemplo n.º 3
0
def run(filename):
    model = models.UnrollingHelicesRt2()    
    path_to_input = os.path.join(path_to_trackml, "train_1")
    for event_id, hits, truth in load_dataset(path_to_input, parts=["hits", "truth"],
                                              skip=0, nevents=1):

        def Fun4BO(w1, w2, w3, niter):
            model.dbscan_weight[0] = w1
            model.dbscan_weight[1] = w1
            model.dbscan_weight[2] = w2
            model.dbscan_weight[3] = w3
            model.niter = int(niter)
            labels = model.predict(hits)
            one_submission = create_one_event_submission(event_id, hits, labels)
            score = score_event(truth, one_submission)
            return score

        print("Bayesian Optimization")
        opt = BayesianOptimization(Fun4BO,
                                   {"w1": (0.9, 1.2),
                                    "w2": (0.3, 0.7),
                                    "w3": (0.1, 0.4),
                                    "niter": (140, 190)},  #(140, 190)
                                   verbose = True)
        opt.maximize(init_points = 3,
                     n_iter = 100, #
                     acq = "ucb",
                     kappa = 2.576)

        # [string]
        labels = opt.res["max"]["max_params"].keys()
        # [dict(string, [float])]
        params = opt.res["all"]["params"]
        len_params = len(params)
    
        data_dic = {}

        for label in labels:
            val = [opt.res["max"]["max_params"][label]]
            for i in range(len_params):
                val.append(params[i][label])
                data_dic[label] = val
        data_dic["value"] = [opt.res["max"]["max_val"]] + opt.res["all"]["values"]
        data_dic["label"] = ["max"] + [str(x) for x in range(len_params)]
        df = pd.DataFrame(data_dic)
        df.to_csv(filename, label=None)
Exemplo n.º 4
0
def run(filename):
    model = models.UnrollingHelicesRt2(
        dbscan_features=["sina1", "cosa1", "z1", "z2", "x_rt", "y_rt"],
        dbscan_weight=[1.0, 1.0, 0.75, 0.2, 0.05, 0.05])
    model.niter = 150
    nevents = 1
    niter_bo = 40
    path_to_input = os.path.join(path_to_trackml, "train_1")

    event_id_list = []
    hits_list = []
    truth_list = []
    for event_id, hits, truth in load_dataset(path_to_input,
                                              parts=["hits", "truth"],
                                              nevents=nevents):
        event_id_list.append(event_id)
        hits_list.append(hits)
        truth_list.append(truth)

    def Fun4BO(w_a1, w_z1, w_z2, w_xy_rt, eps0):
        model.dbscan_weight[0] = w_a1
        model.dbscan_weight[1] = w_a1
        model.dbscan_weight[2] = w_z1
        model.dbscan_weight[3] = w_z2
        model.dbscan_weight[4] = w_xy_rt
        model.dbscan_weight[5] = w_xy_rt
        model.eps0 = eps0
        score_list = []
        for (hits, truth) in zip(hits_list, truth_list):
            labels = model.predict(hits)
            one_submission = create_one_event_submission(
                event_id, hits, labels)
            score = score_event(truth, one_submission)
            score_list.append(score)
        return np.sum(score_list) / len(score_list)

    print("Bayesian Optimization")
    opt = BayesianOptimization(Fun4BO, {
        "w_a1": (0.7, 1.2),
        "w_z1": (0.3, 0.7),
        "w_z2": (0.1, 0.4),
        "w_xy_rt": (0.002, 0.2),
        "eps0": (0.001, 0.01)
    },
                               verbose=True)
    opt.maximize(
        init_points=3,
        n_iter=niter_bo,  #
        acq="ucb",
        kappa=2.576)

    # [string]
    labels = opt.res["max"]["max_params"].keys()
    # [dict(string, [float])]
    params = opt.res["all"]["params"]
    len_params = len(params)

    data_dic = {}

    for label in labels:
        val = [opt.res["max"]["max_params"][label]]
        for i in range(len_params):
            val.append(params[i][label])
            data_dic[label] = val
    data_dic["value"] = [opt.res["max"]["max_val"]] + opt.res["all"]["values"]
    data_dic["label"] = ["max"] + [str(x) for x in range(len_params)]
    df = pd.DataFrame(data_dic)
    df.to_csv(filename, index=None)