From 95cf6d73e5fcd57a7e6ada5359738d2fe6771625 Mon Sep 17 00:00:00 2001 From: Baptiste Bauvin <baptiste.bauvin.1@ulaval.ca> Date: Thu, 25 Jan 2018 21:32:31 +0100 Subject: [PATCH] Corrected an early fusion issue due tothe dictionnary usage in monoview classifiers --- .../MonoviewClassifiers/Adaboost.py | 4 ++-- .../MonoviewClassifiers/DecisionTree.py | 5 +++-- Code/MonoMultiViewClassifiers/MonoviewClassifiers/KNN.py | 6 ++++-- .../MonoviewClassifiers/RandomForest.py | 5 +++-- Code/MonoMultiViewClassifiers/MonoviewClassifiers/SCM.py | 4 +++- Code/MonoMultiViewClassifiers/MonoviewClassifiers/SGD.py | 5 +++-- .../MonoviewClassifiers/SVMLinear.py | 2 +- .../MonoMultiViewClassifiers/MonoviewClassifiers/SVMPoly.py | 2 +- Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMRBF.py | 2 +- .../Fusion/Methods/EarlyFusionPackage/WeightedLinear.py | 2 +- .../MultiviewClassifiers/Fusion/Methods/LateFusion.py | 4 ++-- 11 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py index 73e2235e..7caafade 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/Adaboost.py @@ -35,8 +35,8 @@ def paramsToSet(nIter, randomState): """Used for weighted linear early fusion to generate random search sets""" paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 15), - DecisionTreeClassifier()]) + paramsSet.append({"n_estimators": randomState.randint(1, 15), + "base_estimator": DecisionTreeClassifier()}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/DecisionTree.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/DecisionTree.py index fe82b333..16512372 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/DecisionTree.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/DecisionTree.py @@ -29,8 +29,9 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 300), randomState.choice(["gini", "entropy"]), - randomState.choice(["best", "random"])]) + paramsSet.append({"max_depth": randomState.randint(1, 300), + "criterion": randomState.choice(["gini", "entropy"]), + "splitter": randomState.choice(["best", "random"])}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/KNN.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/KNN.py index 2c784da6..d242580e 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/KNN.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/KNN.py @@ -29,8 +29,10 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 20), randomState.choice(["uniform", "distance"]), - randomState.choice(["auto", "ball_tree", "kd_tree", "brute"]), randomState.choice([1, 2])]) + paramsSet.append({"n_neighbors": randomState.randint(1, 20), + "weights": randomState.choice(["uniform", "distance"]), + "algorithm": randomState.choice(["auto", "ball_tree", "kd_tree", "brute"]), + "p": randomState.choice([1, 2])}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/RandomForest.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/RandomForest.py index f0955df8..2130acfb 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/RandomForest.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/RandomForest.py @@ -30,8 +30,9 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 300), randomState.randint(1, 300), - randomState.choice(["gini", "entropy"])]) + paramsSet.append({"n_estimators": randomState.randint(1, 300), + "max_depth": randomState.randint(1, 300), + "criterion": randomState.choice(["gini", "entropy"])}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SCM.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SCM.py index bebfc0e5..28c09a13 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SCM.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SCM.py @@ -63,7 +63,9 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.choice(["conjunction", "disjunction"]), randomState.randint(1, 15), randomState.random_sample()]) + paramsSet.append({"model_type": randomState.choice(["conjunction", "disjunction"]), + "max_rules": randomState.randint(1, 15), + "p": randomState.random_sample()}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SGD.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SGD.py index 27d8c2df..c2082775 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SGD.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SGD.py @@ -28,8 +28,9 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.choice(['log', 'modified_huber']), - randomState.choice(["l1", "l2", "elasticnet"]), randomState.random_sample()]) + paramsSet.append({"loss": randomState.choice(['log', 'modified_huber']), + "penalty": randomState.choice(["l1", "l2", "elasticnet"]), + "alpha": randomState.random_sample()}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMLinear.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMLinear.py index 9b354513..2517f5eb 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMLinear.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMLinear.py @@ -26,7 +26,7 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 10000), ]) + paramsSet.append({"C": randomState.randint(1, 10000), }) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMPoly.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMPoly.py index 93abfc03..5c6aff00 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMPoly.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMPoly.py @@ -26,7 +26,7 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 10000), randomState.randint(1, 30)]) + paramsSet.append({"C": randomState.randint(1, 10000), "degree": randomState.randint(1, 30)}) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMRBF.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMRBF.py index 85cca143..df99dc47 100644 --- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMRBF.py +++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/SVMRBF.py @@ -26,7 +26,7 @@ def fit(DATASET, CLASS_LABELS, randomState, NB_CORES=1, **kwargs): def paramsToSet(nIter, randomState): paramsSet = [] for _ in range(nIter): - paramsSet.append([randomState.randint(1, 10000), ]) + paramsSet.append({"C": randomState.randint(1, 10000), }) return paramsSet diff --git a/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/EarlyFusionPackage/WeightedLinear.py b/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/EarlyFusionPackage/WeightedLinear.py index c5f72cae..16fba3f0 100644 --- a/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/EarlyFusionPackage/WeightedLinear.py +++ b/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/EarlyFusionPackage/WeightedLinear.py @@ -87,7 +87,7 @@ class WeightedLinear(EarlyFusionClassifier): def setParams(self, paramsSet): self.weights = paramsSet[0] - self.monoviewClassifiersConfig = dict((str(index), param) for index, param in enumerate(paramsSet[1])) + self.monoviewClassifiersConfig = paramsSet[1] def predict_hdf5(self, DATASET, usedIndices=None, viewsIndices=None): if type(viewsIndices) == type(None): diff --git a/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/LateFusion.py b/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/LateFusion.py index ff6d3ea3..1ba4023f 100644 --- a/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/LateFusion.py +++ b/Code/MonoMultiViewClassifiers/MultiviewClassifiers/Fusion/Methods/LateFusion.py @@ -54,11 +54,11 @@ def intersect(allClassifersNames, directory, viewsIndices, resultsMonoview, clas if resultMonoview[1][0] in classifiersNames[resultMonoview[0]]: classifierIndex = classifiersNames.index(resultMonoview[1][0]) wrongSets[resultMonoview[0]][classifierIndex] = np.where( - trainLabels + resultMonoview[1][3][classificationIndices[0]] == 1) + trainLabels + resultMonoview[1][3][classificationIndices[0]] == 1)[0] else: classifiersNames[resultMonoview[0]].append(resultMonoview[1][0]) wrongSets[resultMonoview[0]].append( - np.where(trainLabels + resultMonoview[1][3][classificationIndices[0]] == 1)) + np.where(trainLabels + resultMonoview[1][3][classificationIndices[0]] == 1)[0]) combinations = itertools.combinations_with_replacement(range(len(classifiersNames[0])), nbViews) bestLen = length -- GitLab