Skip to content
Snippets Groups Projects
Commit 9b0f1735 authored by Dominique Benielli's avatar Dominique Benielli
Browse files

merge

parents 08a88f7b c9615cd3
Branches
Tags
No related merge requests found
Pipeline #3317 failed
...@@ -669,3 +669,5 @@ def execClassif(arguments): ...@@ -669,3 +669,5 @@ def execClassif(arguments):
NB_CLASS, DATASET) NB_CLASS, DATASET)
noise_results.append([noise_std, results_mean_stds]) noise_results.append([noise_std, results_mean_stds])
plot_results_noise(directory, noise_results, metrics[0][0], name) plot_results_noise(directory, noise_results, metrics[0][0], name)
...@@ -17,7 +17,7 @@ from ... import metrics ...@@ -17,7 +17,7 @@ from ... import metrics
# Used for QarBoost and CGreed # Used for QarBoost and CGreed
class ColumnGenerationClassifierQar(BaseEstimator, ClassifierMixin, BaseBoost): class ColumnGenerationClassifierQar(BaseEstimator, ClassifierMixin, BaseBoost):
def __init__(self, n_max_iterations=None, estimators_generator=None, def __init__(self, n_max_iterations=None, estimators_generator="Stumps",
random_state=42, self_complemented=True, twice_the_same=False, random_state=42, self_complemented=True, twice_the_same=False,
c_bound_choice=True, random_start=True, c_bound_choice=True, random_start=True,
n_stumps=1, use_r=True, c_bound_sol=True, n_stumps=1, use_r=True, c_bound_sol=True,
......
...@@ -17,7 +17,7 @@ from ... import metrics ...@@ -17,7 +17,7 @@ from ... import metrics
class ColumnGenerationClassifier(BaseEstimator, ClassifierMixin, BaseBoost): class ColumnGenerationClassifier(BaseEstimator, ClassifierMixin, BaseBoost):
def __init__(self, mu=0.01, epsilon=1e-06, n_max_iterations=100, def __init__(self, mu=0.01, epsilon=1e-06, n_max_iterations=100,
estimators_generator=None, dual_constraint_rhs=0, estimators_generator="Stumps", dual_constraint_rhs=0,
save_iteration_as_hyperparameter_each=None, random_state=None): save_iteration_as_hyperparameter_each=None, random_state=None):
super(ColumnGenerationClassifier, self).__init__() super(ColumnGenerationClassifier, self).__init__()
self.epsilon = epsilon self.epsilon = epsilon
...@@ -78,6 +78,7 @@ class ColumnGenerationClassifier(BaseEstimator, ClassifierMixin, BaseBoost): ...@@ -78,6 +78,7 @@ class ColumnGenerationClassifier(BaseEstimator, ClassifierMixin, BaseBoost):
h_values = ma.array( h_values = ma.array(
np.squeeze(np.array((alpha).T.dot(y_kernel_matrix).T)), np.squeeze(np.array((alpha).T.dot(y_kernel_matrix).T)),
fill_value=-np.inf) fill_value=-np.inf)
h_values[self.chosen_columns_] = ma.masked h_values[self.chosen_columns_] = ma.masked
worst_h_index = ma.argmax(h_values) worst_h_index = ma.argmax(h_values)
......
...@@ -4,6 +4,7 @@ import matplotlib.pyplot as plt ...@@ -4,6 +4,7 @@ import matplotlib.pyplot as plt
import numpy as np import numpy as np
from matplotlib.ticker import FuncFormatter from matplotlib.ticker import FuncFormatter
from scipy.stats import uniform, randint from scipy.stats import uniform, randint
from sklearn.base import BaseEstimator, ClassifierMixin
from sklearn.model_selection import RandomizedSearchCV from sklearn.model_selection import RandomizedSearchCV
from .. import metrics from .. import metrics
...@@ -134,7 +135,7 @@ class CustomUniform: ...@@ -134,7 +135,7 @@ class CustomUniform:
return unif return unif
class BaseMonoviewClassifier(object): class BaseMonoviewClassifier(BaseEstimator, ClassifierMixin):
def genBestParams(self, detector): def genBestParams(self, detector):
return dict( return dict(
......
...@@ -133,7 +133,6 @@ class MinCqLearner(BaseEstimator, ClassifierMixin): ...@@ -133,7 +133,6 @@ class MinCqLearner(BaseEstimator, ClassifierMixin):
logging.info("MinCq training started...") logging.info("MinCq training started...")
logging.info("Training dataset shape: {}".format(str(np.shape(X)))) logging.info("Training dataset shape: {}".format(str(np.shape(X))))
logging.info("Number of voters: {}".format(len(voters))) logging.info("Number of voters: {}".format(len(voters)))
self.majority_vote = MajorityVote(voters) self.majority_vote = MajorityVote(voters)
n_base_voters = len(self.majority_vote.weights) n_base_voters = len(self.majority_vote.weights)
......
...@@ -85,7 +85,7 @@ def parseTheArgs(arguments): ...@@ -85,7 +85,7 @@ def parseTheArgs(arguments):
default=0.2) default=0.2)
groupClass.add_argument('--CL_nbFolds', metavar='INT', action='store', groupClass.add_argument('--CL_nbFolds', metavar='INT', action='store',
help='Number of folds in cross validation', help='Number of folds in cross validation',
type=int, default=5) type=int, default=2)
groupClass.add_argument('--CL_nbClass', metavar='INT', action='store', groupClass.add_argument('--CL_nbClass', metavar='INT', action='store',
help='Number of classes, -1 for all', type=int, help='Number of classes, -1 for all', type=int,
default=2) default=2)
......
...@@ -75,7 +75,7 @@ def deleteHDF5(benchmarkArgumentsDictionaries, nbCores, DATASET): ...@@ -75,7 +75,7 @@ def deleteHDF5(benchmarkArgumentsDictionaries, nbCores, DATASET):
os.remove(filename) os.remove(filename)
def makeMeNoisy(viewData, randomState, percentage=15): def makeMeNoisy(viewData, randomState, percentage=5):
"""used to introduce some noise in the generated data""" """used to introduce some noise in the generated data"""
viewData = viewData.astype(bool) viewData = viewData.astype(bool)
nbNoisyCoord = int( nbNoisyCoord = int(
...@@ -93,11 +93,9 @@ def makeMeNoisy(viewData, randomState, percentage=15): ...@@ -93,11 +93,9 @@ def makeMeNoisy(viewData, randomState, percentage=15):
def getPlausibleDBhdf5(features, pathF, name, NB_CLASS=3, LABELS_NAME="", def getPlausibleDBhdf5(features, pathF, name, NB_CLASS=3, LABELS_NAME="",
randomState=None, full=True, add_noise=False, randomState=None, full=True, add_noise=False,
noise_std=0.15, nbView=3, noise_std=0.15, nbView=3,
nbClass=2, datasetLength=1000, randomStateInt=None): nbClass=2, datasetLength=100, randomStateInt=42, nbFeatures = 5):
"""Used to generate a plausible dataset to test the algorithms""" """Used to generate a plausible dataset to test the algorithms"""
randomStateInt = 42
randomState = np.random.RandomState(randomStateInt)
nbFeatures = 10
if not os.path.exists(os.path.dirname(pathF + "Plausible.hdf5")): if not os.path.exists(os.path.dirname(pathF + "Plausible.hdf5")):
try: try:
os.makedirs(os.path.dirname(pathF + "Plausible.hdf5")) os.makedirs(os.path.dirname(pathF + "Plausible.hdf5"))
...@@ -383,7 +381,7 @@ def copyhdf5Dataset(sourceDataFile, destinationDataFile, sourceDatasetName, ...@@ -383,7 +381,7 @@ def copyhdf5Dataset(sourceDataFile, destinationDataFile, sourceDatasetName,
def getClassicDBhdf5(views, pathF, nameDB, NB_CLASS, askedLabelsNames, def getClassicDBhdf5(views, pathF, nameDB, NB_CLASS, askedLabelsNames,
randomState, full=False, add_noise=False, noise_std=0.15): randomState, full=False, add_noise=False, noise_std=0.15,):
"""Used to load a hdf5 database""" """Used to load a hdf5 database"""
if full: if full:
datasetFile = h5py.File(pathF + nameDB + ".hdf5", "r") datasetFile = h5py.File(pathF + nameDB + ".hdf5", "r")
...@@ -422,7 +420,9 @@ def getClassicDBhdf5(views, pathF, nameDB, NB_CLASS, askedLabelsNames, ...@@ -422,7 +420,9 @@ def getClassicDBhdf5(views, pathF, nameDB, NB_CLASS, askedLabelsNames,
labelsDictionary = dict( labelsDictionary = dict(
(labelIndex, labelName.decode("utf-8")) for labelIndex, labelName in (labelIndex, labelName.decode("utf-8")) for labelIndex, labelName in
enumerate(datasetFile.get("Labels").attrs["names"])) enumerate(datasetFile.get("Labels").attrs["names"]))
datasetFile.close()
datasetFile = h5py.File(pathF + nameDB + "_temp_view_label_select.hdf5",
"r")
if add_noise: if add_noise:
datasetFile, dataset_name = add_gaussian_noise(datasetFile, randomState, datasetFile, dataset_name = add_gaussian_noise(datasetFile, randomState,
pathF, dataset_name, pathF, dataset_name,
...@@ -460,6 +460,8 @@ def add_gaussian_noise(dataset_file, random_state, path_f, dataset_name, ...@@ -460,6 +460,8 @@ def add_gaussian_noise(dataset_file, random_state, path_f, dataset_name,
noisy_dataset[view_name][...] = noised_data noisy_dataset[view_name][...] = noised_data
original_dataset_filename = dataset_file.filename original_dataset_filename = dataset_file.filename
dataset_file.close() dataset_file.close()
noisy_dataset.close()
noisy_dataset = h5py.File(path_f + dataset_name + "_noised.hdf5", "r")
if "_temp_" in original_dataset_filename: if "_temp_" in original_dataset_filename:
os.remove(original_dataset_filename) os.remove(original_dataset_filename)
return noisy_dataset, dataset_name + "_noised" return noisy_dataset, dataset_name + "_noised"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment