diff --git a/summit/multiview_platform/monoview_classifiers/bagged_spkm.py b/summit/multiview_platform/monoview_classifiers/bagged_spkm.py index ebf32547b66d3ab0ceddfd5727ce6c716f71ea2e..44a0cd4b3ed2fe6f7bcac88a17056fbe2c354996 100644 --- a/summit/multiview_platform/monoview_classifiers/bagged_spkm.py +++ b/summit/multiview_platform/monoview_classifiers/bagged_spkm.py @@ -3,7 +3,7 @@ from sklearn.preprocessing import LabelBinarizer from imblearn.under_sampling import RandomUnderSampler -from spkm.spkm_wrapper import SPKMlikeSklearn +from spkm.spkm_wrapper import SPKMl2l1likeSklearn from spkm.kernels_and_gradients import RBFKernel, PolyKernel from ..monoview.monoview_utils import BaseMonoviewClassifier @@ -13,28 +13,30 @@ from ..monoview_classifiers.spkm import SPKM classifier_class_name = "BaggedSPKM" proto=True -class BaggedSPKM(BaseMonoviewClassifier, SPKMlikeSklearn): +class BaggedSPKM(BaseMonoviewClassifier, SPKMl2l1likeSklearn): def __init__(self, random_state=42, n_u=2, kernel=RBFKernel(0.5), - spkmregP=1, spkminit="randn", - nspkminits=10, preprocessinglist=[0,1,2], **kwargs): + spkmregP_01=1, spkminit="randn", + nspkminits=10, preprocessinglist=[0,1,2], + spkm_l1_regstyle="l1ball", **kwargs): SPKM.__init__(self, random_state=random_state, n_u=n_u, kernel=kernel, - spkmregP=spkmregP, + spkmregP_01=spkmregP_01, spkminit=spkminit, nspkminits=nspkminits, - preprocessinglist=preprocessinglist) + preprocessinglist=preprocessinglist, + spkm_l1_regstyle=spkm_l1_regstyle) self.rus = RandomUnderSampler(random_state=random_state) def fit(self, X, y): self.lb = LabelBinarizer(pos_label=1, neg_label=-1) y = self.lb.fit_transform(y) - return SPKMlikeSklearn.fit(self, X, y[:,0],) + return SPKMl2l1likeSklearn.fit(self, X, y[:,0],) def predict(self, X, preprocess=True): - return self.lb.inverse_transform(np.sign(SPKMlikeSklearn.predict(self, X))) + return self.lb.inverse_transform(np.sign(SPKMl2l1likeSklearn.predict(self, X))) def get_interpretation(self, directory, base_file_name, labels, multiclass=False): u = self.feature_interpretability() diff --git a/summit/multiview_platform/monoview_classifiers/scmboost.py b/summit/multiview_platform/monoview_classifiers/scmboost.py index 2ed86500437228e54bff26bc1b93111b9b9a9fab..89f1e4b7a501d1de89b01351070cd6e999457d56 100644 --- a/summit/multiview_platform/monoview_classifiers/scmboost.py +++ b/summit/multiview_platform/monoview_classifiers/scmboost.py @@ -25,20 +25,22 @@ class SCMboost(AdaBoostClassifier, BaseMonoviewClassifier): """ def __init__(self, random_state=None, n_estimators=50, - base_estimator=SCM(p=0.49, max_rules=10, model_type="conjunction"), + base_estimator=SCM(p=0.49, max_rules=1, model_type="conjunction"), **kwargs): if "base_estimator__p" in kwargs: base_estimator.p = kwargs["base_estimator__p"] if "base_estimator__model_type" in kwargs: base_estimator.model_type = kwargs["base_estimator__model_type"] + if "base_estimator__max_rules" in kwargs: + base_estimator.max_rules = kwargs["base_estimator__max_rules"] AdaBoostClassifier.__init__(self, random_state=random_state, n_estimators=n_estimators, base_estimator=base_estimator, algorithm="SAMME",) - self.param_names = ["n_estimators", "base_estimator__p", "base_estimator__model_type"] + self.param_names = ["n_estimators", "base_estimator__p", "base_estimator__model_type", "base_estimator__max_rules"] self.classed_params = [] - self.distribs = [CustomRandint(low=1, high=100), CustomUniform(loc=0, state=1), ["conjunction", "disjunction"]] + self.distribs = [CustomRandint(low=1, high=100), CustomUniform(loc=0, state=1), ["conjunction", "disjunction"], CustomRandint(low=1, high=20)] self.weird_strings = {} diff --git a/summit/multiview_platform/monoview_classifiers/spkm.py b/summit/multiview_platform/monoview_classifiers/spkm.py index 7c6f4c7ce1f59cdc8a0fc5819680d37c5216c74b..3d710131036be886411a69122d4787e438f3550c 100644 --- a/summit/multiview_platform/monoview_classifiers/spkm.py +++ b/summit/multiview_platform/monoview_classifiers/spkm.py @@ -1,36 +1,39 @@ import numpy as np from sklearn.preprocessing import LabelBinarizer -from spkm.spkm_wrapper import SPKMlikeSklearn +from spkm.spkm_wrapper import SPKMl2l1likeSklearn from spkm.kernels_and_gradients import RBFKernel, PolyKernel from ..monoview.monoview_utils import BaseMonoviewClassifier -from ..utils.hyper_parameter_search import CustomRandint +from ..utils.hyper_parameter_search import CustomUniform from ..utils.dataset import get_samples_views_indices classifier_class_name = "SPKM" proto=True -class SPKM(BaseMonoviewClassifier, SPKMlikeSklearn): +class SPKM(BaseMonoviewClassifier, SPKMl2l1likeSklearn): def __init__(self, random_state=42, n_u=2, kernel=RBFKernel(0.5), - spkmregP=1, spkminit="randn", - nspkminits=10, preprocessinglist=[0,1,2], **kwargs): + spkmregP_01=1, spkminit="randn", + nspkminits=10, preprocessinglist=[0,1,2], + spkm_l1_regstyle="l1ball",**kwargs): - SPKMlikeSklearn.__init__(self, random_state=random_state, + SPKMl2l1likeSklearn.__init__(self, random_state=random_state, n_u=n_u, kernel=kernel, - spkmregP=spkmregP, + spkmregP_01=spkmregP_01, spkminit=spkminit, nspkminits=nspkminits, - preprocessinglist=preprocessinglist) - self.param_names = ["n_u", "kernel", "spkmregP", + preprocessinglist=preprocessinglist, + spkm_l1_regstyle=spkm_l1_regstyle) + self.param_names = ["n_u", "kernel", "spkmregP_01", "spkminit", "nspkminits", "preprocessinglist", + "spkm_l1_regstyle", "random_state"] self.distribs = [[2], [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)], - CustomRandint(-4,4, multiplier='e'), + CustomUniform(), ["data"], [10], - [[0,1],], + [[0,1],], ["l1ball", "proxgd"] [random_state],] self.more_than_two_views = False self.weird_strings = [] @@ -39,10 +42,10 @@ class SPKM(BaseMonoviewClassifier, SPKMlikeSklearn): def fit(self, X, y): self.lb = LabelBinarizer(pos_label=1, neg_label=-1) y = self.lb.fit_transform(y) - return SPKMlikeSklearn.fit(self, X, y[:,0],) + return SPKMl2l1likeSklearn.fit(self, X, y[:,0],) def predict(self, X, preprocess=True): - return self.lb.inverse_transform(np.sign(SPKMlikeSklearn.predict(self, X))) + return self.lb.inverse_transform(np.sign(SPKMl2l1likeSklearn.predict(self, X))) def get_interpretation(self, directory, base_file_name, labels, multiclass=False): u = self.feature_interpretability() diff --git a/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py b/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py index 507984138f7d18e54b25b33e89771ed0aa3464a1..1541d33189b7584401e2d3c1047d6916a0f337f1 100644 --- a/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py +++ b/summit/multiview_platform/multiview_classifiers/bagged_spkm_pw.py @@ -3,7 +3,7 @@ from sklearn.preprocessing import LabelBinarizer from imblearn.under_sampling import RandomUnderSampler -from spkm.spkm_wrapper import pairwiseSPKMlikeSklearn +from spkm.spkm_wrapper import pairwiseSPKMl2l1likeSklearn from spkm.kernels_and_gradients import RBFKernel, PolyKernel from ..multiview.multiview_utils import BaseMultiviewClassifier @@ -16,16 +16,18 @@ classifier_class_name = "SampledPWSPKM" class SampledPWSPKM(PWSPKM,): def __init__(self, random_state=42, n_u=2, kernel1=RBFKernel(0.5), - kernel2=RBFKernel(0.5), spkmregP=1, spkminit="randn", - nspkminits=10, preprocessinglist=[0,1,2], **kwargs): + kernel2=RBFKernel(0.5), spkmregP_01=1, spkminit="randn", + nspkminits=10, preprocessinglist=[0,1,2], spkm_l1_regstyle="l1ball", + **kwargs): PWSPKM.__init__(self, random_state=random_state, n_u=n_u, kernel1=kernel1, kernel2=kernel2, - spkmregP=spkmregP, + spkmregP_01=spkmregP_01, spkminit=spkminit, nspkminits=nspkminits, - preprocessinglist=preprocessinglist) + preprocessinglist=preprocessinglist, + spkm_l1_regstyle=spkm_l1_regstyle) self.rus = RandomUnderSampler(random_state=random_state) def fit(self, X, y, train_indices=None, view_indices=None): @@ -46,4 +48,4 @@ class SampledPWSPKM(PWSPKM,): for view_index in view_indices] self.rus.fit_resample(view_list[0], y[train_indices]) resampled_list = [X[self.rus.sample_indices_, :] for X in view_list] - return pairwiseSPKMlikeSklearn.fit(self, resampled_list, y[train_indices,0][self.rus.sample_indices_],) + return pairwiseSPKMl2l1likeSklearn.fit(self, resampled_list, y[train_indices,0][self.rus.sample_indices_],) diff --git a/summit/multiview_platform/multiview_classifiers/spkm_pw.py b/summit/multiview_platform/multiview_classifiers/spkm_pw.py index 10ddd635b4e15399a74acf278100f5b3cc97f69d..1d791e79cd1fba0b104deb751d33d3248821534e 100644 --- a/summit/multiview_platform/multiview_classifiers/spkm_pw.py +++ b/summit/multiview_platform/multiview_classifiers/spkm_pw.py @@ -1,38 +1,41 @@ import numpy as np from sklearn.preprocessing import LabelBinarizer -from spkm.spkm_wrapper import pairwiseSPKMlikeSklearn +from spkm.spkm_wrapper import pairwiseSPKMl2l1likeSklearn from spkm.kernels_and_gradients import RBFKernel, PolyKernel from ..multiview.multiview_utils import BaseMultiviewClassifier -from ..utils.hyper_parameter_search import CustomRandint +from ..utils.hyper_parameter_search import CustomUniform from ..utils.dataset import get_samples_views_indices classifier_class_name = "PWSPKM" -class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn): +class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMl2l1likeSklearn): def __init__(self, random_state=42, n_u=2, kernel1=RBFKernel(0.5), - kernel2=RBFKernel(0.5), spkmregP=1, spkminit="randn", - nspkminits=10, preprocessinglist=[0,1,2], **kwargs): + kernel2=RBFKernel(0.5), spkmregP_01=1, spkminit="randn", + nspkminits=10, preprocessinglist=[0,1,2], + spkm_l1_regstyle="l1ball", **kwargs): BaseMultiviewClassifier.__init__(self, random_state) - pairwiseSPKMlikeSklearn.__init__(self, random_state=random_state, + pairwiseSPKMl2l1likeSklearn.__init__(self, random_state=random_state, n_u=n_u, kernel1=kernel1, kernel2=kernel2, - spkmregP=spkmregP, + spkmregP_01=spkmregP_01, spkminit=spkminit, nspkminits=nspkminits, - preprocessinglist=preprocessinglist) - self.param_names = ["n_u", "kernel1", "kernel2", "spkmregP", + preprocessinglist=preprocessinglist, + spkm_l1_regstyle=spkm_l1_regstyle) + self.param_names = ["n_u", "kernel1", "kernel2", "spkmregP_01", "spkminit", "nspkminits", "preprocessinglist", + "spkm_l1_regstyle", "random_state"] self.distribs = [[2], [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)], [PolyKernel({"d":3, "r":1}), RBFKernel(0.5)], - CustomRandint(-4,4, multiplier='e'), + CustomUniform(), ["data"], [10], - [[0,1],], + [[0,1],], ["l1ball", "proxgd"] [random_state],] self.more_than_two_views = False self.random_state = random_state @@ -40,7 +43,6 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn): def fit(self, X, y, train_indices=None, view_indices=None): self.lb = LabelBinarizer(pos_label=1, neg_label=-1) y = self.lb.fit_transform(y) - print(np.unique(y)) train_indices, view_indices = get_samples_views_indices(X, train_indices, view_indices) @@ -53,7 +55,7 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn): for view_index in view_indices] view_list = [X.get_v(view_index)[train_indices, :] for view_index in view_indices] - return pairwiseSPKMlikeSklearn.fit(self, view_list, y[train_indices,0],) + return pairwiseSPKMl2l1likeSklearn.fit(self, view_list, y[train_indices,0],) def predict(self, X, sample_indices=None, view_indices=None): if self.more_than_two_views: @@ -65,7 +67,7 @@ class PWSPKM(BaseMultiviewClassifier, pairwiseSPKMlikeSklearn): view_list = [X.get_v(view_index)[sample_indices, :] for view_index in view_indices] - return self.lb.inverse_transform(np.sign(pairwiseSPKMlikeSklearn.predict(self, view_list))) + return self.lb.inverse_transform(np.sign(pairwiseSPKMl2l1likeSklearn.predict(self, view_list))) def get_interpretation(self, directory, base_file_name, labels, multiclass=False): u, v = self.feature_interpretability()