def test_make_pattern(self): data = self.__create_test_data() selected = EvaluateItem().set_params(100, 10, datetime(2013, 4, 1, 0, 0)) evaluator = ItemEvaluator() evaluator.set_rule("bpm", ItemEvaluator.calc_near_is_better) evaluator.set_rule("reviews", ItemEvaluator.calc_more_is_better) evaluator.set_rule("elapsed", ItemEvaluator.calc_less_is_better) patterns = evaluator.make_pattern(data, selected) for p in patterns: print(p) self.assertLess(abs(p.score - self.__calculate_pattern_percentage(p, selected, data)), 1 / pow(10, 5))
def make_evaluator(cls, history=None): from .track_criticize_pattern import TrackCriticizePattern evaluator = ItemEvaluator(TrackCriticizePattern) evaluator.set_rule("elapsed", EvaluationType.LessIsBetter) evaluator.set_rule("genre_score", EvaluationType.NearIsBetter) evaluator.set_rule("bpm", EvaluationType.NearIsBetter) evaluator.set_rule("comment_count", EvaluationType.MoreIsBetter) evaluator.set_rule("download_count", EvaluationType.MoreIsBetter) evaluator.set_rule("playback_count", EvaluationType.MoreIsBetter) evaluator.set_rule("favoritings_count", EvaluationType.MoreIsBetter) evaluator.set_rule("tag_tokens", EvaluationType.TextTokens) # set weight by history evaluator.set_weight("comment_count", 1.5) evaluator.set_weight("playback_count", 2) evaluator.set_weight("favoritings_count", 2) return evaluator
def __get_ruled_evaluator(self): evaluator = ItemEvaluator() evaluator.set_rule("bpm", ItemEvaluator.calc_near_is_better) evaluator.set_rule("reviews", ItemEvaluator.calc_more_is_better) evaluator.set_rule("elapsed", ItemEvaluator.calc_less_is_better) return evaluator