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()
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()