Пример #1
0
def print_rule_hash():
    DescriptionsTests.setUpClass()
    rule = create_rule()
    if os.getenv("HASH_RULE_TEST") == "1":
        print(hash_rule(rule, DescriptionsTests.fe))
    else:
        print(describe_rule(rule, DescriptionsTests.fe))
Пример #2
0
 def test_describe_rule_bag(self):
     name, indices, feature = self.bag
     activated = randint(0, len(indices) - 1)
     activated_name = feature.names[activated]
     not_activated = randint(0, len(indices) - 1)
     not_activated_name = feature.names[not_activated]
     picked_class = randint(0, self.n_classes - 1)
     picked_class_name = self.class_representations[picked_class]
     index = indices[activated]
     not_index = indices[not_activated]
     rule = Rule(attrs=[
         RuleAttribute(index, True, 0.5),
         RuleAttribute(not_index, False, 0.5)
     ],
                 stats=RuleStats(picked_class, 0.9, 150),
                 artificial=False)
     self.assertEqual(
         describe_rule(rule, self.fe), "  %s in {%s} and not in {%s}\n"
         "⇒ y = %s\n"
         "Confidence: 0.900. Support: 150." % (
             name,
             activated_name,
             not_activated_name,
             picked_class_name,
         ))
 def test_describe_rule_ordinal(self):
     name, indices, feature = self.ordinal
     picked_class = randint(0, self.n_classes - 1)
     picked_class_name = self.class_representations[picked_class]
     index = indices[0]
     rule = Rule(attrs=[(index, True, 4.5)], stats=RuleStats(picked_class, 0.9, 150),
                 artificial=False)
     self.assertEqual(describe_rule(rule, self.fe),
                      "  %s ≥ %d\n"
                      "⇒ y = %s\n"
                      "Confidence: 0.900. Support: 150." % (
                          name, ceil(4.5), picked_class_name,
                      ))
 def test_describe_rule_parent(self):
     feature_id = FeatureId.internal_type
     index = self.fe.feature_to_indices[FeatureGroup.parents][0][feature_id][0]
     picked_class = randint(0, self.n_classes - 1)
     picked_class_name = self.class_representations[picked_class]
     rule = Rule(attrs=[(index, True, 4)], stats=RuleStats(picked_class, 0.9, 150),
                 artificial=False)
     self.assertEqual(describe_rule(rule, self.fe),
                      "  ^1.%s = AnyTypeAnnotation\n"
                      "⇒ y = %s\n"
                      "Confidence: 0.900. Support: 150." % (
                          feature_id.name, picked_class_name,
                      ))
 def test_describe_rule_right(self):
     feature_id = FeatureId.length
     index = self.fe.feature_to_indices[FeatureGroup.right][0][feature_id][0]
     picked_class = randint(0, self.n_classes - 1)
     picked_class_name = self.class_representations[picked_class]
     rule = Rule(attrs=[(index, True, 4.5)], stats=RuleStats(picked_class, 0.9, 150),
                 artificial=False)
     self.assertEqual(describe_rule(rule, self.fe),
                      "  +1.%s ≥ %d\n"
                      "⇒ y = %s\n"
                      "Confidence: 0.900. Support: 150." % (
                          feature_id.name, ceil(4.5), picked_class_name,
                      ))
 def test_describe_rule_categorical(self):
     name, indices, feature = self.categorical
     activated = randint(0, len(indices) - 1)
     activated_name = feature.names[activated]
     picked_class = randint(0, self.n_classes - 1)
     picked_class_name = self.class_representations[picked_class]
     index = indices[activated]
     rule = Rule(attrs=[(index, True, 0.5)], stats=RuleStats(picked_class, 0.9, 150),
                 artificial=False)
     self.assertEqual(describe_rule(rule, self.fe),
                      "  %s = %s\n"
                      "⇒ y = %s\n"
                      "Confidence: 0.900. Support: 150." % (
                          name, activated_name, picked_class_name,
                      ))
Пример #7
0
 def test_hash_rule(self):
     rule = create_rule()
     my_hash = hash_rule(rule, self.fe)
     self.assertEqual(len(my_hash), 8)
     for c in my_hash:
         self.assertIn(c, set("abcdef0123456789"))
     env = os.environ.copy()
     env["HASH_RULE_TEST"] = "1"
     other_hash = subprocess.check_output([sys.executable, __file__],
                                          env=env).decode().strip()
     if my_hash != other_hash:
         s1 = describe_rule(rule, self.fe)
         env["HASH_RULE_TEST"] = "2"
         s2 = subprocess.check_output([sys.executable, __file__],
                                      env=env).decode().strip()
     else:
         s1 = s2 = ""
     self.assertEqual(my_hash, other_hash,
                      "%s\n%s\n%s\n%s" % ("=" * 20, s1, "=" * 20, s2))