Skip to content
Snippets Groups Projects
Commit 913490d8 authored by bbauvin's avatar bbauvin
Browse files

Updated benchmark, working

parent e351af31
No related branches found
No related tags found
No related merge requests found
......@@ -34,7 +34,7 @@ matplotlib.use('Agg') # Anti-Grain Geometry C++ library to make a raster (pixel
def initLogFile(args):
resultDirectory = "../../Results/" + args.name + "/started_" + time.strftime("%Y_%m_%d-%H_%M") + "/"
logFileName = time.strftime("%Y%m%d-%H%M%S") + "-CMultiV-" + args.CL_type + "-" + "_".join(
logFileName = time.strftime("%Y%m%d-%H%M%S") + "-" + ''.join(args.CL_type) + "-" + "_".join(
args.views) + "-" + args.name + \
"-LOG"
if not os.path.exists(os.path.dirname(resultDirectory + logFileName)):
......@@ -127,21 +127,20 @@ def initBenchmark(args):
"""Used to create a list of all the algorithm packages names used for the benchmark
Needs args.CL_type, args.CL_algos_multiview, args.MU_types, args.FU_types, args.FU_late_methods,
args.FU_early_methods, args.CL_algos_monoview"""
benchmark = {"Monoview": {}, "Multiview": []}
if args.CL_type.split(":") == ["Benchmark"]:
benchmark = {"Monoview": {}, "Multiview": {}}
allMultiviewPackages = [name for _, name, isPackage
in pkgutil.iter_modules(['Multiview/']) if isPackage]
if args.CL_type == ["Benchmark"]:
allMonoviewAlgos = [name for _, name, isPackage in
pkgutil.iter_modules(['MonoviewClassifiers'])
if (not isPackage)]
benchmark["Monoview"] = allMonoviewAlgos
allMultiviewPackages = [name for _, name, isPackage
in pkgutil.iter_modules(['Multiview/']) if isPackage]
benchmark["Multiview"]=dict((multiviewPackageName, "_") for multiviewPackageName in allMultiviewPackages)
for multiviewPackageName in allMultiviewPackages:
multiviewPackage = getattr(Multiview, multiviewPackageName)
multiviewModule = getattr(multiviewPackage, multiviewPackageName)
benchmark = multiviewModule.getBenchmark(args, benchmark)
print benchmark
benchmark = multiviewModule.getBenchmark(benchmark, args=args)
# fusionModulesNames = [name for _, name, isPackage
# in pkgutil.iter_modules(['Multiview/Fusion/Methods']) if not isPackage]
# fusionModules = [getattr(Multiview.Fusion.Methods, fusionModulesName)
......@@ -159,44 +158,49 @@ def initBenchmark(args):
# allMultiviewAlgos = {"Fusion": allFusionAlgos, "Mumbo": allMumboAlgos}
# benchmark = {"Monoview": allMonoviewAlgos, "Multiview": allMultiviewAlgos}
if "Multiview" in args.CL_type.strip(":"):
if "Multiview" in args.CL_type:
benchmark["Multiview"] = {}
if args.CL_algos_multiview == [""]:
algosMutliview = ["Mumbo", "Fusion"]
algosMutliview = allMultiviewPackages
else:
algosMutliview = args.CL_algos_multiview
if "Mumbo" in algosMutliview:
benchmark["Multiview"]["Mumbo"] = args.MU_types
if "Fusion" in algosMutliview:
benchmark["Multiview"]["Fusion"] = {}
benchmark["Multiview"]["Fusion"]["Methods"] = dict(
(fusionType, []) for fusionType in args.FU_types)
if "LateFusion" in args.FU_types:
if args.FU_late_methods== [""]:
benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = [name for _, name, isPackage in
pkgutil.iter_modules([
"Multiview/Fusion/Methods/LateFusionPackage"])
if not isPackage]
else:
benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = args.FU_late_methods
if "EarlyFusion" in args.FU_types:
if args.FU_early_methods == [""]:
benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = [name for _, name, isPackage in
pkgutil.iter_modules([
"Multiview/Fusion/Methods/EarlyFusionPackage"])
if not isPackage]
else:
benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = args.FU_early_methods
if args.CL_algos_monoview == ['']:
benchmark["Multiview"]["Fusion"]["Classifiers"] = [name for _, name, isPackage in
pkgutil.iter_modules(['MonoviewClassifiers'])
if (not isPackage) and (name != "SGD") and (
name[:3] != "SVM")
and (name != "SCM")]
else:
benchmark["Multiview"]["Fusion"]["Classifiers"] = args.CL_algos_monoview
for multiviewPackageName in allMultiviewPackages:
if multiviewPackageName in algosMutliview:
multiviewPackage = getattr(Multiview, multiviewPackageName)
multiviewModule = getattr(multiviewPackage, multiviewPackageName)
benchmark = multiviewModule.getBenchmark(benchmark, args=args)
# if "Mumbo" in algosMutliview:
# benchmark["Multiview"]["Mumbo"] = args.MU_types
# if "Fusion" in algosMutliview:
# benchmark["Multiview"]["Fusion"] = {}
# benchmark["Multiview"]["Fusion"]["Methods"] = dict(
# (fusionType, []) for fusionType in args.FU_types)
# if "LateFusion" in args.FU_types:
# if args.FU_late_methods== [""]:
# benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = [name for _, name, isPackage in
# pkgutil.iter_modules([
# "Multiview/Fusion/Methods/LateFusionPackage"])
# if not isPackage]
# else:
# benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = args.FU_late_methods
# if "EarlyFusion" in args.FU_types:
# if args.FU_early_methods == [""]:
# benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = [name for _, name, isPackage in
# pkgutil.iter_modules([
# "Multiview/Fusion/Methods/EarlyFusionPackage"])
# if not isPackage]
# else:
# benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = args.FU_early_methods
# if args.CL_algos_monoview == ['']:
# benchmark["Multiview"]["Fusion"]["Classifiers"] = [name for _, name, isPackage in
# pkgutil.iter_modules(['MonoviewClassifiers'])
# if (not isPackage) and (name != "SGD") and (
# name[:3] != "SVM")
# and (name != "SCM")]
# else:
# benchmark["Multiview"]["Fusion"]["Classifiers"] = args.CL_algos_monoview
if "Monoview" in args.CL_type.strip(":"):
if "Monoview" in args.CL_type:
if args.CL_algos_monoview == ['']:
benchmark["Monoview"] = [name for _, name, isPackage in pkgutil.iter_modules(["MonoviewClassifiers"])
if not isPackage]
......@@ -425,9 +429,9 @@ groupClass.add_argument('--CL_nb_class', metavar='INT', action='store', help='Nu
groupClass.add_argument('--CL_classes', metavar='STRING', action='store', nargs="+",
help='Classes used in the dataset (names of the folders) if not filled, random classes will be '
'selected ex. walrus mole leopard', default=["yes","no"])
groupClass.add_argument('--CL_type', metavar='STRING', action='store',
help='Determine whether to use Multiview, Monoview, or Benchmark, separate with : if multiple',
default='Benchmark')
groupClass.add_argument('--CL_type', metavar='STRING', action='store', nargs ="+",
help='Determine whether to use Multiview and/or Monoview, or Benchmark',
default=['Benchmark'])
groupClass.add_argument('--CL_algos_monoview', metavar='STRING', action='store', nargs="+",
help='Determine which monoview classifier to use if empty, considering all',
default=[''])
......
......@@ -13,7 +13,7 @@ __author__ = "Baptiste Bauvin"
__status__ = "Prototype" # Production, Development, Prototype
def getBenchmark(args, benchmark):
def getBenchmark(benchmark, args=None):
fusionModulesNames = [name for _, name, isPackage
in pkgutil.iter_modules(['Multiview/Fusion/Methods']) if not isPackage]
fusionModules = [getattr(Methods, fusionModulesName)
......@@ -25,12 +25,44 @@ def getBenchmark(args, benchmark):
["Multiview/Fusion/Methods/" + fusionModulesName + "Package"])
if not isPackage])
for fusionModulesName, fusionClasse in zip(fusionModulesNames, fusionClassifiers))
if args is None:
allMonoviewAlgos = [name for _, name, isPackage in
pkgutil.iter_modules(['MonoviewClassifiers'])
if (not isPackage)]
fusionMonoviewClassifiers = allMonoviewAlgos
allFusionAlgos = {"Methods": fusionMethods, "Classifiers": fusionMonoviewClassifiers}
benchmark["Multiview"]["Fusion"]=allFusionAlgos
else:
benchmark["Multiview"]["Fusion"] = {}
if args.FU_types != [""]:
benchmark["Multiview"]["Fusion"]["Methods"] = dict(
(fusionType, []) for fusionType in args.FU_types)
else:
benchmark["Multiview"]["Fusion"]["Methods"] = dict((fusionModulesName, "_") for fusionModulesName in fusionModulesNames)
if "LateFusion" in benchmark["Multiview"]["Fusion"]["Methods"]:
if args.FU_late_methods== [""]:
benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = [name for _, name, isPackage in
pkgutil.iter_modules([
"Multiview/Fusion/Methods/LateFusionPackage"])
if not isPackage]
else:
benchmark["Multiview"]["Fusion"]["Methods"]["LateFusion"] = args.FU_late_methods
if "EarlyFusion" in args.FU_types:
if args.FU_early_methods == [""]:
benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = [name for _, name, isPackage in
pkgutil.iter_modules([
"Multiview/Fusion/Methods/EarlyFusionPackage"])
if not isPackage]
else:
benchmark["Multiview"]["Fusion"]["Methods"]["EarlyFusion"] = args.FU_early_methods
if args.CL_algos_monoview == ['']:
benchmark["Multiview"]["Fusion"]["Classifiers"] = [name for _, name, isPackage in
pkgutil.iter_modules(['MonoviewClassifiers'])
if (not isPackage) and (name != "SGD") and (
name[:3] != "SVM")
and (name != "SCM")]
else:
benchmark["Multiview"]["Fusion"]["Classifiers"] = args.CL_algos_monoview
return benchmark
......@@ -39,7 +71,8 @@ def getArgs(args, benchmark, views, viewsIndices):
args.FU_L_select_monoview = "randomClf"
argumentsList = []
for fusionType in benchmark["Multiview"]["Fusion"]["Methods"]:
fusionTypePackage = globals()[fusionType+"Package"]
# import pdb;pdb.set_trace()
fusionTypePackage = getattr(Methods, fusionType+"Package")
for fusionMethod in benchmark["Multiview"]["Fusion"]["Methods"][fusionType]:
fusionMethodModule = getattr(fusionTypePackage, fusionMethod)
arguments = fusionMethodModule.getArgs(args, views, viewsIndices)
......
from ...Methods.LateFusion import LateFusionClassifier
import MonoviewClassifiers
import numpy as np
from sklearn.metrics import accuracy_score
import pkgutil
from utils.Dataset import getV
import MonoviewClassifiers
from ...Methods.LateFusion import LateFusionClassifier
def genParamsSets(classificationKWARGS, nIter=1):
......@@ -24,7 +26,17 @@ def genParamsSets(classificationKWARGS, nIter=1):
# return classifiersNames, classifiersConfig, fusionMethodConfig
def getArgs(args, views, viewsIndices):
if args.FU_L_cl_names!=['']:
monoviewClassifierModules = [getattr(MonoviewClassifiers, classifierName) for classifierName in args.FU_L_cl_names]
else:
monoviewClassifierModulesNames = [name for _, name, isPackage in pkgutil.iter_modules(['MonoviewClassifiers'])
if (not isPackage)]
monoviewClassifierModules = [getattr(MonoviewClassifiers, classifierName)
for classifierName in monoviewClassifierModulesNames]
if args.FU_L_cl_config != ['']:
classifierConfig = [monoviewClassifierModule.getKWARGS([arg.split(":") for arg in classifierConfig.split(",")])
for monoviewClassifierModule,classifierConfig
in zip(monoviewClassifierModules,args.FU_L_cl_config)]
arguments = {"CL_type": "Fusion",
"views": views,
"NB_VIEW": len(views),
......
......@@ -17,10 +17,16 @@ __status__ = "Prototype" # Production, Development, P
# Data shape : ((Views, Examples, Corrdinates))
def getBenchmark(args, benchmark):
def getBenchmark(benchmark, args=None):
allAlgos = [name for _, name, isPackage in
pkgutil.iter_modules(['Multiview/Mumbo/Classifiers'])
if not isPackage and not name in ["SubSampling", "ModifiedMulticlass", "Kover"]]
if args is None:
benchmark["Multiview"]["Mumbo"] = allAlgos
else:
if args.MU_types != ['']:
benchmark["Multiview"]["Mumbo"] = args.MU_types
else :
benchmark["Multiview"]["Mumbo"] = allAlgos
return benchmark
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment