@@ -542,9 +542,35 @@ def FPR(discriminationScore):
542542 result = np .where (discriminationScore .pCassumingnotP == 0 , float ('inf' ), 1 / discriminationScore .pCassumingnotP )
543543 return result
544544
545+ def Gini (discriminationScore ):
546+ gini_index = 1 - (discriminationScore .pCassumingP ** 2 + discriminationScore .pnotCassumingP ** 2 )
547+ return 1 / (gini_index + 0.0000000001 )
548+
549+ def Gini2 (discriminationScore ):
550+ gini_index = (discriminationScore .pPassumingC ** 2 ) * discriminationScore .pCassumingP + (discriminationScore .pPassumingnotC ** 2 ) * discriminationScore .pnotCassumingP
551+ return 1 / (gini_index + 0.0000000001 )
552+
553+ def Entropy (discriminationScore ):
554+ epsilon = 1e-10 # Avoid log(0)
555+ p0 = discriminationScore .pnotCassumingP
556+ p1 = discriminationScore .pCassumingP
557+
558+ entropy = - (p0 * np .log2 (p0 + epsilon ) + p1 * np .log2 (p1 + epsilon ))
559+ return 1 / (entropy + epsilon )
560+
561+ def Fisher (discriminationScore ):
562+ epsilon = 1e-10 # Avoid division by zero
563+ mean_diff = (discriminationScore .pCassumingP - discriminationScore .pnotCassumingP ) ** 2
564+ var_sum = discriminationScore .pCassumingP * (1 - discriminationScore .pCassumingP ) + \
565+ discriminationScore .pnotCassumingP * (1 - discriminationScore .pnotCassumingP )
566+
567+ return mean_diff / (var_sum + epsilon )
568+
569+
545570
546571def CertaintyFactor (discriminationScore ):
547572 return (discriminationScore .pCassumingP - discriminationScore .pC ) / (1 - discriminationScore .pC )
573+
548574def creationDictionnaryScores ():
549575 dico = {
550576 "Acc" : Acc ,
@@ -556,8 +582,11 @@ def creationDictionnaryScores():
556582 "Cos" : Cos ,
557583 "Cover" : Cover ,
558584 "Dep" : Dep ,
585+ "Entropy" : Entropy ,
559586 "Excex" : Excex ,
587+ "Fisher" : Fisher ,
560588 "Gain" : Gain ,
589+ "Gini" : Gini ,
561590 "GR" : GR ,
562591 "InfGain" : InfGain ,
563592 "Jacc" : Jacc ,
@@ -657,19 +686,21 @@ def graphKeep(Graphes,labels):
657686 minority = 0
658687 NbMino = len (labels )- sum (labels )
659688 keep = []
689+ NbMino = 0
660690 count = 0
661691 graphs = []
662692 for i in range (len (labels )):
663693 if labels [i ]== minority :
694+ NbMino = NbMino + 1
664695 keep .append (i )
665696 complete = NbMino
666697 for i in range (len (labels )):
667698 if labels [i ]!= minority :
668699 if count < complete :
669700 count = count + 1
670701 keep .append (i )
671- return keep
672702
703+ return keep
673704
674705
675706def cross_validation (X ,Y ,cv ,classifier ):
@@ -1079,11 +1110,11 @@ def GoldStandardComparison(arg,mode,id_graphsMono,labels,keep,TAILLEGRAPHE):
10791110 if arg == "PTC" :
10801111 Range = [129 ]
10811112 if arg == "FOPPA" :
1082- Range = [33 ]
1113+ Range = [66 ]
10831114 if arg == "AIDS" :
10841115 Range = [19 ]
10851116 if arg == "NCI1" :
1086- Range = [20 ]
1117+ Range = [39 ]
10871118 if arg == "DD" :
10881119 Range = [353 ]
10891120 if arg == "IMDB" :
@@ -1280,43 +1311,45 @@ def plot_fig(arg):
12801311 NAMESORTIEF1 = "../results/" + str (arg )+ "/" + str (arg )+ "ShapleyF1"
12811312
12821313 dicoNumeroNom = {
1283- 0 : "Acc" ,
1284- 1 : "Brins" ,
1285- 2 : "CConf" ,
1286- 3 : "CFactor" ,
1287- 4 : "ColStr" ,
1288- 5 : "Cole" ,
1289- 6 : "Conf" ,
1290- 7 : "Cos" ,
1291- 8 : "Cover" ,
1292- 9 : "Dep" ,
1293- 10 : "Excex" ,
1294- 11 : "FPR" ,
1295- 12 : "GR" ,
1296- 13 : "Gain" ,
1297- 14 : "InfGain" ,
1298- 15 : "Jacc" ,
1299- 16 : "Klos" ,
1300- 17 : "Lap" ,
1301- 18 : "Lever" ,
1302- 19 : "Lift" ,
1303- 20 : "MDisc" ,
1304- 21 : "MutInf" ,
1305- 22 : "NetConf" ,
1306- 23 : "OddsR" ,
1307- 24 : "Pearson" ,
1308- 25 : "RelRisk" ,
1309- 26 : "Sebag" ,
1310- 27 : "Spec" ,
1311- 28 : "Str" ,
1312- 29 : "Sup" ,
1313- 30 : "SupDif" ,
1314- 31 : "AbsSupDif" ,
1315- 32 : "WRACC" ,
1316- 33 : "Zhang" ,
1317- 34 : "chiTwo" ,
1318-
1319- }
1314+ 0 : "Acc" ,
1315+ 1 : "Brins" ,
1316+ 2 : "CConf" ,
1317+ 3 : "CFactor" ,
1318+ 4 : "ColStr" ,
1319+ 5 : "Cole" ,
1320+ 6 : "Conf" ,
1321+ 7 : "Cos" ,
1322+ 8 : "Cover" ,
1323+ 9 : "Dep" ,
1324+ 10 : "Entropy" ,
1325+ 11 : "Excex" ,
1326+ 12 : "FPR" ,
1327+ 13 : "Fisher" ,
1328+ 14 : "GR" ,
1329+ 15 : "Gain" ,
1330+ 16 : "Gini" ,
1331+ 17 : "InfGain" ,
1332+ 18 : "Jacc" ,
1333+ 19 : "Klos" ,
1334+ 20 : "Lap" ,
1335+ 21 : "Lever" ,
1336+ 22 : "Lift" ,
1337+ 23 : "MDisc" ,
1338+ 24 : "MutInf" ,
1339+ 25 : "NetConf" ,
1340+ 26 : "OddsR" ,
1341+ 27 : "Pearson" ,
1342+ 28 : "RelRisk" ,
1343+ 29 : "Sebag" ,
1344+ 30 : "Spec" ,
1345+ 31 : "Str" ,
1346+ 32 : "Sup" ,
1347+ 33 : "SupDif" ,
1348+ 34 : "AbsSupDif" ,
1349+ 35 : "WRACC" ,
1350+ 36 : "Zhang" ,
1351+ 37 : "chiTwo" ,
1352+ }
13201353
13211354 datas = pd .read_csv (NOMDATA )
13221355 print (datas )
@@ -1347,14 +1380,14 @@ def plot_fig(arg):
13471380 print (datas )
13481381
13491382
1350- TOKEEP1 = [0 ,4 ,10 , 12 , 21 , 27 , 29 , 31 ]
1383+ TOKEEP1 = [0 ,4 ,11 , 14 , 24 , 30 , 32 , 34 ]
13511384 TOKEEP2 = [16 ,17 ,18 ,20 ,21 ,22 ,23 ,24 ]
13521385 TOKEEP3 = [25 ,27 ,28 ,29 ,31 ,33 ,34 ]
13531386
1354- TOKEEPA = [0 ,4 ,7 ,9 ,10 ]
1355- TOKEEPB = [12 , 13 , 15 ,16 , 17 ]
1356- TOKEEPC = [20 , 21 , 22 , 23 , 24 ]
1357- TOKEEPD = [25 , 27 , 29 , 31 , 34 ]
1387+ TOKEEPA = [0 ,4 ,7 ,9 ,10 , 11 ]
1388+ TOKEEPB = [14 , 15 ,18 , 19 , 20 ]
1389+ TOKEEPC = [23 , 24 , 25 , 26 , 27 ]
1390+ TOKEEPD = [28 , 30 , 32 , 33 , 37 ]
13581391
13591392 maxVal = 0
13601393 for i in range (0 , nBScore ):
0 commit comments