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

Updated benchmark, working

parent e351af31
Branches
Tags
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