Example #1
0
def main():
    print("Setting up dataset and evaluator...")
    # Setup dataset and evaluator
    dataset = Dataset(load_tags=True,
                      filter_tag=False,
                      weight_tag=False)
    dataset.set_track_attr_weights_2(1.0, 1.0, 0.0, 0.0, 0.0,
                                     1.0, 1.0, 0.0, 0.0)
    ev = Evaluator(seed=False)
    ev.cross_validation(5, dataset.train_final.copy())

    for i in range(0, 5):
        print("Training models for fold {}-th".format(i))
        train_models(dataset, ev, n_clusters=20)
Example #2
0
def main(n_evaluations):
    print("Setting up dataset...")
    # Setup dataset and evaluator
    dataset = Dataset(load_tags=True,
                      filter_tag=False,
                      weight_tag=False)
    dataset.set_track_attr_weights_2(1.0, 1.0, 0.0, 0.0, 0.0,
                                     1.0, 1.0, 0.0, 0.0)

    # Run mAP evaluation a number of times to reduce the variance
    # of the results
    n_clusters = 20
    best = np.zeros((4, n_clusters), dtype=int)
    for i in range(n_evaluations):
        print("Running cross validation no. {}".format(i))
        print("Setting up the Evaluator...")
        ev = Evaluator(seed=False)
        ev.cross_validation(5, dataset.train_final.copy())
        folding_best = train_models(dataset, ev,
                                    n_folds=5, n_clusters=n_clusters)
        best += folding_best
        top = top_over_cluster(best)
        _print_top(top)
Example #3
0
def evaluateMap():
    from src.utils.evaluator import Evaluator
    dataset = Dataset(load_tags=True, filter_tag=False, weight_tag=False)
    dataset.set_track_attr_weights_2(2.0, 2.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0,
                                     0.0)
    # seed = 0xcafebabe
    # print("Evaluating with initial seed: {}".format(seed))
    ev = Evaluator(seed=False)
    ev.cross_validation(5, dataset.train_final.copy())
    cbf = ContentBasedFiltering()
    for i in range(0, 5):
        urm, tg_tracks, tg_playlist = ev.get_fold(dataset)
        cbf.fit(urm, list(tg_playlist), list(tg_tracks), dataset)
        recs = cbf.predict()
        ev.evaluate_fold(recs)

    map_at_five = ev.get_mean_map()
    print("MAP@5 ", map_at_five)
Example #4
0
def evaluateMap():
    from src.utils.evaluator import Evaluator
    dataset = Dataset(load_tags=True, filter_tag=False, weight_tag=False)
    dataset.set_track_attr_weights_2(1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
                                     0.0)
    dataset.set_playlist_attr_weights(1, 1, 1, 0, 0)

    ev = Evaluator()
    ev.cross_validation(5, dataset.train_final.copy())
    cbf = ContentBasedFiltering(alfa=0.999)
    for i in range(0, 5):
        urm, tg_tracks, tg_playlist = ev.get_fold(dataset)
        cbf.fit(urm, list(tg_playlist), list(tg_tracks), dataset)
        recs = cbf.predict()
        ev.evaluate_fold(recs)

    map_at_five = ev.get_mean_map()
    print("MAP@5 ", map_at_five)
Example #5
0
    def run(self):
        used_seconds = 0
        # 迭代
        while True:
            logger.info(f"{'*' * 50}")

            # 确定当前时间, 取算法执行时间和模拟器的切片时间的大值
            self.cur_time = self.pre_time + (
                used_seconds // self.time_interval + 1) * self.time_interval
            logger.info(
                f"cur time: {datetime.datetime.fromtimestamp(self.cur_time)}, "
                f"pre time: {datetime.datetime.fromtimestamp(self.pre_time)}")

            # update the status of vehicles and orders in a given interval [self.pre_time, self.cur_time]
            updated_input_info = self.update_input()

            # 派单环节, 设计与算法交互
            used_seconds, dispatch_result = self.dispatch(updated_input_info)
            self.time_to_dispatch_result[self.cur_time] = dispatch_result

            # 校验, 车辆目的地不能改变
            if not Checker.check_dispatch_result(
                    dispatch_result, self.id_to_vehicle, self.id_to_order):
                logger.error("Dispatch result is infeasible")
                return

            # 根据派单指令更新车辆
            self.deliver_control_command_to_vehicles(dispatch_result)

            # 判断是否完成所有订单的派发
            if self.complete_the_dispatch_of_all_orders():
                break

            self.pre_time = self.cur_time

            # 若订单已经超时, 但是算法依旧未分配, 模拟终止
            if self.ignore_allocating_timeout_orders(dispatch_result):
                logger.error('Simulator terminated')
                sys.exit(-1)

        # 模拟完成车辆剩下的订单
        self.simulate_the_left_ongoing_orders_of_vehicles(self.id_to_vehicle)

        # 根据self.history 计算指标
        self.total_score = Evaluator.calculate_total_score(
            self.history, self.route_map, len(self.id_to_vehicle))
Example #6
0
        return self.R_hat

    def get_model(self):
        """
        Returns the complete R_hat
        """
        return self.R_hat.copy()


if __name__ == '__main__':
    ds = Dataset(load_tags=True, filter_tag=True)
    ds.set_track_attr_weights_2(1,
                                1,
                                1,
                                1,
                                1,
                                num_rating_weight=1,
                                inferred_album=1,
                                inferred_duration=1,
                                inferred_playcount=1)
    ev = Evaluator()
    ev.cross_validation(5, ds.train_final.copy())
    for i in range(0, 5):
        fm = FM()
        urm, tg_tracks, tg_playlist = ev.get_fold(ds)
        fm.fit(urm, list(tg_playlist), list(tg_tracks), ds)
        recs = fm.predict()
        ev.evaluate_fold(recs)
    map_at_five = ev.get_mean_map()
    print("MAP@5 Final", map_at_five)