@@ -133,3 +133,61 @@ def test_zhang(self):
133133
134134 def test_leverage (self ):
135135 self .assertAlmostEqual (self .rule .leverage , 2 / 3 - (2 / 3 * 2 / 3 ))
136+
137+
138+ class TestMetricsShuffleDataframe (TestCase ):
139+ def setUp (self ):
140+ self .data = Dataset (
141+ pd .DataFrame ({"col1" : [1.5 , 2.5 , 1.0 ], "col2" : ["Green" , "Blue" , "Red" ]}).sample (frac = 1.0 )
142+ )
143+ self .rule = Rule (
144+ [Feature ("col1" , dtype = "float" , min_val = 1.0 , max_val = 1.5 )],
145+ [Feature ("col2" , dtype = "cat" , categories = ["Red" , "Green" ])],
146+ transactions = self .data .transactions ,
147+ )
148+
149+ def test_support (self ):
150+ self .assertEqual (self .rule .support , 2 / 3 )
151+
152+ def test_confidence (self ):
153+ self .assertEqual (self .rule .confidence , 1 )
154+
155+ def test_lift (self ):
156+ self .assertEqual (self .rule .lift , 1.5 )
157+
158+ def test_coverage (self ):
159+ self .assertEqual (self .rule .coverage , 2 / 3 )
160+
161+ def test_rhs_support (self ):
162+ self .assertEqual (self .rule .rhs_support , 2 / 3 )
163+
164+ def test_conviction (self ):
165+ self .assertAlmostEqual (
166+ self .rule .conviction ,
167+ (1 - self .rule .rhs_support )
168+ / (1 - self .rule .confidence + 2.220446049250313e-16 ),
169+ )
170+
171+ def test_amplitude (self ):
172+ self .assertEqual (self .rule .amplitude , 5 / 6 )
173+
174+ def test_inclusion (self ):
175+ self .assertEqual (self .rule .inclusion , 1 )
176+
177+ def test_interestingness (self ):
178+ self .assertEqual (self .rule .interestingness , 1 * 1 * (1 - (2 / 3 ) / 3 ))
179+
180+ def test_comprehensibility (self ):
181+ self .assertAlmostEqual (self .rule .comprehensibility , 0.630929753571 )
182+
183+ def test_netconf (self ):
184+ self .assertAlmostEqual (self .rule .netconf , ((2 / 3 ) - (2 / 3 * 2 / 3 ))/ (2 / 3 * 1 / 3 ))
185+
186+ def test_yulesq (self ):
187+ self .assertAlmostEqual (self .rule .yulesq ,1 )
188+
189+ def test_zhang (self ):
190+ self .assertAlmostEqual (self .rule .zhang , 1 )
191+
192+ def test_leverage (self ):
193+ self .assertAlmostEqual (self .rule .leverage , 2 / 3 - (2 / 3 * 2 / 3 ))
0 commit comments