Skip to content

Commit 9f2dfd1

Browse files
committed
Fixed bug in regression/survival expert rules (issue 127). Added missing test reports from the previous commit.
1 parent 24243cd commit 9f2dfd1

7 files changed

+53
-11
lines changed

adaa.analytics.rules/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id 'java'
66
}
77

8-
version = '2.1.23'
8+
version = '2.1.24'
99
java {
1010
sourceCompatibility = JavaVersion.VERSION_1_8
1111
}

adaa.analytics.rules/src/main/java/adaa/analytics/rules/logic/induction/RegressionExpertFinder.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ public void adjust(
5858
CompoundCondition expertPremise = rule.getPremise();
5959
rule.setPremise(new CompoundCondition());
6060

61+
IntegerBitSet positives = new IntegerBitSet(dataset.size());
62+
IntegerBitSet negatives = new IntegerBitSet(dataset.size());
6163
Covering covering = new Covering();
64+
// ugly
65+
covering.positives = positives;
66+
covering.negatives = negatives;
6267

6368
for (ConditionBase cnd : expertPremise.getSubconditions()) {
6469
ElementaryCondition ec = (ElementaryCondition)cnd;
@@ -68,10 +73,12 @@ public void adjust(
6873

6974
// update covering information - needed for automatic induction
7075
covering.clear();
76+
7177
rule.covers(dataset, covering, covering.positives, covering.negatives);
72-
Set<Integer> covered = new HashSet<Integer>();
73-
covered.addAll(covering.positives);
74-
covered.addAll(covering.negatives);
78+
Set<Integer> covered = new IntegerBitSet(dataset.size());
79+
covered.addAll(positives);
80+
covered.addAll(negatives);
81+
7582
rule.setCoveringInformation(covering);
7683

7784
// determine attribute
@@ -111,13 +118,7 @@ public void adjust(
111118
}
112119

113120
covering.clear();
114-
IntegerBitSet positives = new IntegerBitSet(dataset.size());
115-
IntegerBitSet negatives = new IntegerBitSet(dataset.size());
116-
rule.covers(dataset, covering, positives, negatives);
117-
118-
// ugly
119-
covering.positives = positives;
120-
covering.negatives = negatives;
121+
rule.covers(dataset, covering, covering.positives, covering.negatives);
121122
rule.setCoveringInformation(covering);
122123

123124
rule.setCoveredNegatives(negatives);

adaa.analytics.rules/test/resources/config/SurvivalLogRankExpertSnCTest.xml

+18
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,24 @@
7777
<param name ="expert_forbidden_conditions">
7878
</param>
7979
</parameter_set>
80+
81+
<parameter_set name="guided-s5, adjust">
82+
<param name="min_rule_covered">5</param>
83+
<param name="use_expert">true</param>
84+
<param name="extend_using_preferred">false</param>
85+
<param name="extend_using_automatic">false</param>
86+
<param name="induce_using_preferred">false</param>
87+
<param name="induce_using_automatic">false</param>
88+
<param name ="expert_rules">
89+
<entry name="rule-0">IF CD34kgx10d6 @= Any THEN </entry>
90+
<entry name="rule-1">IF Donorage @= Any THEN </entry>
91+
<entry name="rule-2">IF Donorage @= (50, inf) THEN </entry>
92+
</param>
93+
<param name ="expert_preferred_conditions">
94+
</param>
95+
<param name ="expert_forbidden_conditions">
96+
</param>
97+
</parameter_set>
8098

8199
</parameter_sets>
82100

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
3+
Rules
4+
IF [[gimpuls = (-inf, 177.50)]] THEN class = {0}
5+
IF [[gimpuls = (-inf, 239.50)]] THEN class = {0}
6+
IF [[gimpuls = <408.50, inf)]] THEN class = {1}
7+
IF [[gimpuls = <317.50, inf)]] THEN class = {1}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
3+
Rules
4+
IF [[seismoacoustic = {a}]] THEN class = {0}
5+
IF [[seismoacoustic = {a}]] THEN class = {1}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
3+
Rules
4+
IF [[seismoacoustic = !{b}]] THEN class = {0}
5+
IF [[seismoacoustic = !{c}]] THEN class = {1}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
3+
Rules
4+
IF [[CD34kgx10d6 = (-inf, 11.86)]] THEN
5+
IF [[Donorage = (-inf, 45.53)]] THEN
6+
IF [[Donorage = <45.53, inf)]] THEN

0 commit comments

Comments
 (0)