예제 #1
0
 def train(self, intervals):
     finish = False
     prepare = Preparer(intervals, **self.config)
     while not finish:
         # get events
         rows, flag = prepare.get_data_from_db()
         batch_states = []
         batch_newstates = []
         batch_actions = []
         for row in rows:
             # get info about event
             time_event = None
             tag_id = None
             user_id = None
             time_delta = None
             # init features
             state = self.model.get_features(user_id, tag_id, time_event)
             next_state = self.model.get_features(user_id, tag_id,
                                                  time_event + time_delta)
             action = 1
             batch_states.append(state)
             batch_newstates.append(next_state)
             batch_actions.append(action)
         if len(batch_states) > 0:
             self.model_dqnn.train(batch_states, batch_newstates,
                                   batch_actions)
         if not flag:
             finish = prepare.next_iteration()
예제 #2
0
    def train(self, model_dqnn, intervals):
        finish = False
        prepare = Preparer(intervals, **self.config)
        prepare.generate_category_features()
        self.all_categories = [
            categorie[0] for categorie in prepare.list_categories
        ]
        while not finish:
            # get events
            rows, flag = prepare.get_encode_data_to_db()
            batch_states = []
            batch_newstates = []
            batch_actions = []
            for row in rows:
                # get info about event
                id_event = row['id']
                event = self.model._dictionary.get_coment(id_event)
                time_event = event['time']
                user_id = event['username_id']

                time_delta = datetime.timedelta(hours=1)
                # init features
                time_state = time_event - datetime.timedelta(seconds=1)
                time_next_state = time_event + time_delta

                categories = self.model.get_read_categories(
                    user_id, time_state, time_next_state, self.all_categories)
                for tag_id in categories:
                    action = categories[tag_id]
                    state = self.model.get_features(user_id, tag_id,
                                                    time_state)
                    if state is None:
                        continue
                    next_state = self.model.get_features(
                        user_id, tag_id, time_next_state)
                    batch_states.append(state)
                    batch_newstates.append(next_state)
                    batch_actions.append(action)

            if len(batch_states) > 0:
                model_dqnn.train(batch_states, batch_newstates, batch_actions)
            if not flag:
                finish = prepare.next_iteration()