From 1745f3d504f28b1dcc770108310f5f9d0770c9ce Mon Sep 17 00:00:00 2001 From: bbauvin <baptiste.bauvin@centrale-marseille.fr> Date: Tue, 17 Oct 2017 15:23:43 -0400 Subject: [PATCH] Modified Execclassif to free hyperparamsearch from multiview package --- Code/Exec.py | 4 ++-- Code/MonoMutliViewClassifiers/ExecClassif.py | 2 +- .../MonoviewClassifiers/RandomForest.py | 4 ++-- Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py | 6 +++--- .../Multiview/Fusion/Methods/EarlyFusion.py | 2 +- .../Multiview/Fusion/Methods/LateFusion.py | 2 +- .../Multiview/Mumbo/Classifiers/DecisionTree.py | 2 +- Code/MonoMutliViewClassifiers/Multiview/Mumbo/Mumbo.py | 6 +++--- .../Multiview/Mumbo/analyzeResults.py | 9 +++++---- Code/MonoMutliViewClassifiers/Multiview/__init__.py | 7 ++++++- Code/MonoMutliViewClassifiers/utils/Dataset.py | 2 +- .../utils/HyperParameterSearch.py | 7 +++---- Code/MonoMutliViewClassifiers/utils/__init__.py | 2 +- Code/Tests/__init__.py | 0 Code/Tests/poulet.py | 1 + Code/__init__.py | 3 +-- 16 files changed, 32 insertions(+), 27 deletions(-) create mode 100644 Code/Tests/__init__.py create mode 100644 Code/Tests/poulet.py diff --git a/Code/Exec.py b/Code/Exec.py index ba70e864..f4a06d2f 100644 --- a/Code/Exec.py +++ b/Code/Exec.py @@ -1,5 +1,5 @@ import sys -from MonoMutliViewClassifiers.ExecClassif import execClassif +from MonoMutliViewClassifiers import ExecClassif -execClassif(sys.argv[1:]) +ExecClassif.execClassif(sys.argv[1:]) diff --git a/Code/MonoMutliViewClassifiers/ExecClassif.py b/Code/MonoMutliViewClassifiers/ExecClassif.py index a4b70ca0..ed53a1f4 100644 --- a/Code/MonoMutliViewClassifiers/ExecClassif.py +++ b/Code/MonoMutliViewClassifiers/ExecClassif.py @@ -14,7 +14,7 @@ import matplotlib import h5py # Import own modules -import Multiview +from . import Multiview # import Metrics import MonoviewClassifiers from Multiview.ExecMultiview import ExecMultiview, ExecMultiview_multicore diff --git a/Code/MonoMutliViewClassifiers/MonoviewClassifiers/RandomForest.py b/Code/MonoMutliViewClassifiers/MonoviewClassifiers/RandomForest.py index 16246724..ba85738d 100644 --- a/Code/MonoMutliViewClassifiers/MonoviewClassifiers/RandomForest.py +++ b/Code/MonoMutliViewClassifiers/MonoviewClassifiers/RandomForest.py @@ -1,10 +1,10 @@ from sklearn.ensemble import RandomForestClassifier from sklearn.pipeline import Pipeline from sklearn.model_selection import RandomizedSearchCV -import Metrics +from .. import Metrics from scipy.stats import randint import numpy as np -from utils.HyperParameterSearch import genHeatMaps +from ..utils.HyperParameterSearch import genHeatMaps # Author-Info __author__ = "Baptiste Bauvin" diff --git a/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py b/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py index a9d7bb3c..544c36e9 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py +++ b/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py @@ -11,9 +11,9 @@ import logging import time import h5py +from ..utils.Dataset import getShape +from ..utils import HyperParameterSearch import Multiview -from utils.Dataset import getShape -from utils.HyperParameterSearch import searchBestSettings # Author-Info __author__ = "Baptiste Bauvin" @@ -59,7 +59,7 @@ def ExecMultiview(directory, DATASET, name, classificationIndices, KFolds, nbCor analysisModule = getattr(classifierPackage, "analyzeResults") if hyperParamSearch != "None": - classifier = searchBestSettings(DATASET, CL_type, metrics, learningIndices, KFolds, randomState, + classifier = HyperParameterSearch.searchBestSettings(DATASET, classifierModule, CL_type, metrics, learningIndices, KFolds, randomState, viewsIndices=viewsIndices, searchingTool=hyperParamSearch, nIter=nIter, **classificationKWARGS) else: diff --git a/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/EarlyFusion.py b/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/EarlyFusion.py index ebfa665d..fa282d9c 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/EarlyFusion.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/EarlyFusion.py @@ -2,7 +2,7 @@ # -*- encoding: utf-8 import numpy as np -from utils.Dataset import getV +from ....utils.Dataset import getV class EarlyFusionClassifier(object): diff --git a/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/LateFusion.py b/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/LateFusion.py index c2044a81..df9b88e9 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/LateFusion.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Fusion/Methods/LateFusion.py @@ -9,7 +9,7 @@ from joblib import Parallel, delayed import os import sys -import MonoviewClassifiers +from .... import MonoviewClassifiers import Metrics from utils.Dataset import getV diff --git a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py index 14fc273d..3e8bbb5b 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py @@ -7,7 +7,7 @@ import logging # Add weights -import Metrics +from .... import Metrics class DecisionTree(BaseEstimator, ClassifierMixin): diff --git a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Mumbo.py b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Mumbo.py index a6de51d6..c79f4dec 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Mumbo.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/Mumbo.py @@ -2,13 +2,13 @@ import numpy as np import math from joblib import Parallel, delayed import itertools -from Classifiers import * import time -import Classifiers import pkgutil import logging from sklearn.metrics import accuracy_score -from utils.Dataset import getV + +import Classifiers +from ...utils.Dataset import getV # Author-Info __author__ = "Baptiste Bauvin" diff --git a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py index 7a853245..e26ff468 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py @@ -6,11 +6,12 @@ matplotlib.use('Agg') import matplotlib.pyplot as plt import operator from datetime import timedelta as hms -import Mumbo -from Classifiers import * import logging -import Metrics -from utils.Dataset import getV, getShape + +# import Mumbo +# from Classifiers import * +from ... import Metrics +from ...utils.Dataset import getV, getShape # Author-Info __author__ = "Baptiste Bauvin" diff --git a/Code/MonoMutliViewClassifiers/Multiview/__init__.py b/Code/MonoMutliViewClassifiers/Multiview/__init__.py index 9ed7abb2..c08e3796 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/__init__.py +++ b/Code/MonoMutliViewClassifiers/Multiview/__init__.py @@ -1,2 +1,7 @@ -from . import GetMultiviewDb, Mumbo, Fusion, ExecMultiview +from . import GetMultiviewDb, ExecMultiview, Mumbo, Fusion + +# from . import ExecMultiview +# from . import Mumbo +# from . import Fusion + __all__ = ['Fusion', 'Mumbo'] diff --git a/Code/MonoMutliViewClassifiers/utils/Dataset.py b/Code/MonoMutliViewClassifiers/utils/Dataset.py index 0d4d324f..1ce96122 100644 --- a/Code/MonoMutliViewClassifiers/utils/Dataset.py +++ b/Code/MonoMutliViewClassifiers/utils/Dataset.py @@ -1,10 +1,10 @@ from scipy import sparse import numpy as np -import Multiview.GetMultiviewDb as DB import logging import os import sys import select +from ..Multiview import GetMultiviewDb as DB def getV(DATASET, viewIndex, usedIndices=None): diff --git a/Code/MonoMutliViewClassifiers/utils/HyperParameterSearch.py b/Code/MonoMutliViewClassifiers/utils/HyperParameterSearch.py index 97ad9403..ddb0b434 100644 --- a/Code/MonoMutliViewClassifiers/utils/HyperParameterSearch.py +++ b/Code/MonoMutliViewClassifiers/utils/HyperParameterSearch.py @@ -1,10 +1,10 @@ import numpy as np import sys -import Multiview -import Metrics import matplotlib.pyplot as plt import itertools +from .. import Metrics + def searchBestSettings(dataset, classifierName, metrics, iLearningIndices, iKFolds, randomState, viewsIndices=None, searchingTool="hyperParamSearch", nIter=1, **kwargs): @@ -22,7 +22,7 @@ def gridSearch(dataset, classifierName, viewsIndices=None, kFolds=None, nIter=1, pass -def randomizedSearch(dataset, classifierName, metrics, learningIndices, KFolds, randomState, viewsIndices=None, nIter=1, +def randomizedSearch(dataset, classifierPackage, classifierName, metrics, learningIndices, KFolds, randomState, viewsIndices=None, nIter=1, nbCores=1, **classificationKWARGS): if viewsIndices is None: viewsIndices = range(dataset.get("Metadata").attrs["nbView"]) @@ -32,7 +32,6 @@ def randomizedSearch(dataset, classifierName, metrics, learningIndices, KFolds, metricKWARGS = dict((index, metricConfig) for index, metricConfig in enumerate(metric[1])) else: metricKWARGS = {} - classifierPackage = getattr(Multiview, classifierName) # Permet d'appeler un module avec une string classifierModule = getattr(classifierPackage, classifierName) classifierClass = getattr(classifierModule, classifierName) if classifierName != "Mumbo": diff --git a/Code/MonoMutliViewClassifiers/utils/__init__.py b/Code/MonoMutliViewClassifiers/utils/__init__.py index a67257f2..842d824c 100644 --- a/Code/MonoMutliViewClassifiers/utils/__init__.py +++ b/Code/MonoMutliViewClassifiers/utils/__init__.py @@ -1 +1 @@ -from . import Dataset +from . import Dataset, execution, HyperParameterSearch, Transformations diff --git a/Code/Tests/__init__.py b/Code/Tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Code/Tests/poulet.py b/Code/Tests/poulet.py new file mode 100644 index 00000000..0733701a --- /dev/null +++ b/Code/Tests/poulet.py @@ -0,0 +1 @@ +print "essai2" \ No newline at end of file diff --git a/Code/__init__.py b/Code/__init__.py index 7ccf8824..01da5837 100644 --- a/Code/__init__.py +++ b/Code/__init__.py @@ -1,2 +1 @@ -__all__ = ['FeatExtraction', 'Monoview', 'Multiview', 'MonoviewClassifiers'] -from . import FeatExtraction, Monoview, Multiview, MonoviewClassifiers \ No newline at end of file +from . import MonoMutliViewClassifiers, Tests, Exec \ No newline at end of file -- GitLab