@@ -67,8 +67,11 @@ def run(cls, path, _data):
67
67
68
68
print ("Graph Plotted: {}" .format (path ), flush = True )
69
69
70
+ area = cls .trapezium_rule (_data ['x' ], _data ['y' ])
71
+
70
72
return dict (coefficients = coefficient ,
71
- r_square = r_square )
73
+ r_square = r_square ,
74
+ area_inverse = (1 / area ))
72
75
73
76
@classmethod
74
77
def title_generation (cls , path , ** kwargs ):
@@ -241,6 +244,20 @@ def lsq_logistic_fit(cls, _x, _y):
241
244
return (k , c ), "y = 1 / (1 + e^(({})x + ({})))" .format (
242
245
k , c ), __x .tolist (), __y .tolist (), predicted_y .tolist ()
243
246
247
+ @classmethod
248
+ def trapezium_rule (cls , _x , _y ):
249
+ """Use trapezium rule to estimate the area under curve"""
250
+ # As x is percentage, use x / 100
251
+ data = [(_x [i ] / 100 , _y [i ]) for i in range (len (_x ))]
252
+ data .sort (key = lambda x : x [0 ])
253
+
254
+ area = 0
255
+ for i in range (len (data ) - 1 ):
256
+ area += ((data [i ][1 ] + data [i + 1 ][1 ]) *
257
+ (data [i + 1 ][0 ] - data [i ][0 ]) / 2 )
258
+
259
+ return area
260
+
244
261
245
262
def plot (name , data ):
246
263
_data = collections .defaultdict (list )
@@ -267,9 +284,10 @@ def main(path):
267
284
printing_data [key ] = plot ("{}.{}" .format (
268
285
path , key .replace (' ' , '_' )), value )
269
286
270
- return (path [path .rfind ('/' ) + 1 :].replace (
271
- '.learning_rate.result.json' , '' ),
272
- printing_data )
287
+ return {
288
+ 'dataset' : path [path .rfind ('/' ) + 1 :].replace (
289
+ '.learning_rate.result.json' , '' ),
290
+ 'result' : printing_data }
273
291
274
292
275
293
def traverse (paths ):
0 commit comments