diff --git a/README.rst b/README.rst index ae56f162e10417d9b9f3aa4cd8eb932cc2463e89..0b6e662707f208275b93470713473e6324e8659b 100644 --- a/README.rst +++ b/README.rst @@ -1,16 +1,18 @@ .. |pipeline| image:: https://gitlab.lis-lab.fr/baptiste.bauvin/summit/badges/master/pipeline.svg :alt: Pipeline status -.. image:: https://img.shields.io/badge/License-GPL%20v3-blue.svg +.. |license| image:: https://img.shields.io/badge/License-GPL%20v3-blue.svg :target: http://www.gnu.org/licenses/gpl-3.0 :alt: License: GPL v3 -|pipeline| - -.. image:: https://gitlab.lis-lab.fr/baptiste.bauvin/summit/badges/master/coverage.svg +.. |coverage| image:: https://gitlab.lis-lab.fr/baptiste.bauvin/summit/badges/master/coverage.svg :target: http://baptiste.bauvin.pages.lis-lab.fr/summit/coverage/index.html :alt: Coverage +|pipeline| |license| |coverage| + + + Supervised MultiModal Integration Tool's Readme =============================================== @@ -109,7 +111,7 @@ For your first go with SuMMIT, you can run it on simulated data with This will run the benchmark of `documentation's Example 1 <http://baptiste.bauvin.pages.lis-lab.fr/summit/tutorials/example1.html>`_. -For more information about the examples, see the `documentation <http://baptiste.bauvin.pages.lis-lab.fr/summit/>`_. +For more information about the examples, see the `documentation <http://baptiste.bauvin.pages.lis-lab.fr/summit/index.html>`_. Results will, by default, be stored in the results directory of the installation path : ``path/to/summit/multiview_platform/examples/results``. diff --git a/docs/source/classifiers.rst b/docs/source/classifiers.rst deleted file mode 100644 index f14e5f968a17a2a7409418a6eb8642223b95ef34..0000000000000000000000000000000000000000 --- a/docs/source/classifiers.rst +++ /dev/null @@ -1,5 +0,0 @@ -.. toctree:: - :maxdepth: 1 - - autoapi/summit/multiview_platform/monoview_classifiers/index - autoapi/summit/multiview_platform/multiview_classifiers/index \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 97c2a905eefc85d6343ec6580cdceb643da9ae0d..0709f0de5e4ec9e36c29a10ed1f7e7aea8da496c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -20,7 +20,8 @@ This documentation consists in a short read me, with instructions to install and .. toctree:: :maxdepth: 2 - classifiers + autoapi/summit/multiview_platform/monoview_classifiers/index + autoapi/summit/multiview_platform/multiview_classifiers/index Read me diff --git a/summit/multiview_platform/monoview_classifiers/adaboost.py b/summit/multiview_platform/monoview_classifiers/adaboost.py index 605041556c5b0f488d0c1474a45fa031e57792e9..82b380f7c93198128064cd2b290c2d7690bcaf17 100644 --- a/summit/multiview_platform/monoview_classifiers/adaboost.py +++ b/summit/multiview_platform/monoview_classifiers/adaboost.py @@ -1,4 +1,3 @@ -""" Ada""" import os import time @@ -19,38 +18,7 @@ classifier_class_name = "Adaboost" class Adaboost(AdaBoostClassifier, BaseMonoviewClassifier): """ - This class implement a Classifier with adaboost algorithm inherit from sklearn - AdaBoostClassifier - - Parameters - ---------- - - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - n_estimators : int number of estimators - - base_estimator : - - kwargs : others arguments - - - Attributes - ---------- - param_name : - - classed_params : - - distribs : - - weird_strings : - - plotted_metric : selection of metric to plot - - plotted_metric_name : name of the metric to plot - - step_predictions : + This class is an adaptation of scikit-learn's `AdaBoostClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoostClassifier>`_ """ @@ -75,23 +43,6 @@ class Adaboost(AdaBoostClassifier, BaseMonoviewClassifier): self.step_predictions = None def fit(self, X, y, sample_weight=None): - """ - Fit adaboost model - - Parameters - ---------- - X : {array-like, sparse matrix}, shape (n_samples, n_features) - - y : { array-like, shape (n_samples,) - Target values class labels in classification - - sample_weight : - - Returns - ------- - self : object - Returns self. - """ begin = time.time() AdaBoostClassifier.fit(self, X, y, sample_weight=sample_weight) end = time.time() @@ -104,21 +55,6 @@ class Adaboost(AdaBoostClassifier, BaseMonoviewClassifier): return self def predict(self, X): - """ - - Parameters - ---------- - X : {array-like, sparse matrix}, shape (n_samples, n_features) - Training vectors, where n_samples is the number of samples - and n_features is the number of features. - For kernel="precomputed", the expected shape of X is - (n_samples, n_samples). - - Returns - ------- - predictions : ndarray of shape (n_samples, ) - The estimated labels. - """ begin = time.time() pred = AdaBoostClassifier.predict(self, X) end = time.time() diff --git a/summit/multiview_platform/monoview_classifiers/decision_tree.py b/summit/multiview_platform/monoview_classifiers/decision_tree.py index 6a6a3b2f7dbc0a205c72b51d7b0a8c118e6d26ac..6b309dc3e11f09e165bab1d5c30d9082681de300 100644 --- a/summit/multiview_platform/monoview_classifiers/decision_tree.py +++ b/summit/multiview_platform/monoview_classifiers/decision_tree.py @@ -11,9 +11,15 @@ classifier_class_name = "DecisionTree" class DecisionTree(DecisionTreeClassifier, BaseMonoviewClassifier): + """ + This class is an adaptation of scikit-learn's `DecisionTreeClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html>`_ + + + """ def __init__(self, random_state=None, max_depth=None, criterion='gini', splitter='best', **kwargs): + DecisionTreeClassifier.__init__(self, max_depth=max_depth, criterion=criterion, diff --git a/summit/multiview_platform/monoview_classifiers/gradient_boosting.py b/summit/multiview_platform/monoview_classifiers/gradient_boosting.py index 8651dbc676241a76b30206eb6593d129f550de8d..e242dee80c6c1ef76daacd2c43d4c178b8f4c495 100644 --- a/summit/multiview_platform/monoview_classifiers/gradient_boosting.py +++ b/summit/multiview_platform/monoview_classifiers/gradient_boosting.py @@ -24,6 +24,11 @@ class CustomDecisionTreeGB(DecisionTreeClassifier): class GradientBoosting(GradientBoostingClassifier, BaseMonoviewClassifier): + """ + This class is an adaptation of scikit-learn's `GradientBoostingClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html>`_ + + + """ def __init__(self, random_state=None, loss="exponential", max_depth=1.0, n_estimators=100, diff --git a/summit/multiview_platform/monoview_classifiers/knn.py b/summit/multiview_platform/monoview_classifiers/knn.py index 0aeb093f5cd59c99f6469d1bcc6aab49142508dd..c23d4d3f910449d4abefc810bf64a110f58b05ae 100644 --- a/summit/multiview_platform/monoview_classifiers/knn.py +++ b/summit/multiview_platform/monoview_classifiers/knn.py @@ -12,18 +12,10 @@ classifier_class_name = "KNN" class KNN(KNeighborsClassifier, BaseMonoviewClassifier): """ - Implement extention of KNeighborsClassifier of sklearn - for the usage of the summit. - - Parameters - ---------- - random_state - n_neighbors - weights - algorithm - p - kwargs - """ + This class is an adaptation of scikit-learn's `KNeighborsClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html>`_ + + + """ def __init__(self, random_state=None, n_neighbors=5, weights='uniform', algorithm='auto', p=2, **kwargs): diff --git a/summit/multiview_platform/monoview_classifiers/lasso.py b/summit/multiview_platform/monoview_classifiers/lasso.py index 9359a3009c72fec13dd4fcd69ace06cfdce190ea..288bf1dbf75b9bf5d5990c41d240fefd956015d9 100644 --- a/summit/multiview_platform/monoview_classifiers/lasso.py +++ b/summit/multiview_platform/monoview_classifiers/lasso.py @@ -13,38 +13,10 @@ classifier_class_name = "Lasso" class Lasso(LassoSK, BaseMonoviewClassifier): """ + This class is an adaptation of scikit-learn's `Lasso <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html>`_ - Parameters - ---------- - random_state : - alpha : float, optional - Constant that multiplies the L1 term. Defaults to 1.0. - ``alpha = 0`` is equivalent to an ordinary least square, solved - by the :class:`LinearRegression` object. For numerical - reasons, using ``alpha = 0`` is with the Lasso object is - not advised - and you should prefer the LinearRegression object. (default( : 10) - - max_iter : int The maximum number of iterations (default : 10) - - warm_start : bool, optional - When set to True, reuse the solution of the previous call to fit as - initialization, otherwise, just erase the previous solution. - - kwargs : others arguments - - Attributes - ---------- - param_name : - - classed_params : - - distribs : - - weird_strings : - - """ + """ def __init__(self, random_state=None, alpha=1.0, max_iter=10, warm_start=False, **kwargs): diff --git a/summit/multiview_platform/monoview_classifiers/random_forest.py b/summit/multiview_platform/monoview_classifiers/random_forest.py index d39943a4c0c0e36386e9f7a63edeec5e85baa4ca..c0ebaaa570e33e6d0fa2a92944a16b7f7ccecb99 100644 --- a/summit/multiview_platform/monoview_classifiers/random_forest.py +++ b/summit/multiview_platform/monoview_classifiers/random_forest.py @@ -11,47 +11,15 @@ classifier_class_name = "RandomForest" class RandomForest(RandomForestClassifier, BaseMonoviewClassifier): - """RandomForest Classifier Class - - Parameters - ---------- - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - n_estimators : int (default : 10) number of estimators - - max_depth : int , optional (default : None) maximum of depth - - criterion : criteria (default : 'gini') - - kwargs : others arguments - - - Attributes - ---------- - param_names : - - distribs : - - classed_params : + """ + This class is an adaptation of scikit-learn's `RandomForestClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html>`_ - weird_strings : """ def __init__(self, random_state=None, n_estimators=10, max_depth=None, criterion='gini', **kwargs): - """ - Parameters - ---------- - random_state - n_estimators - max_depth - criterion - kwargs - """ RandomForestClassifier.__init__(self, n_estimators=n_estimators, max_depth=max_depth, @@ -68,17 +36,7 @@ class RandomForest(RandomForestClassifier, BaseMonoviewClassifier): def get_interpretation(self, directory, base_file_name, y_test, multiclass=False): - """ - - Parameters - ---------- - directory - y_test - Returns - ------- - string for interpretation interpret_string - """ interpret_string = "" interpret_string += self.get_feature_importance(directory, base_file_name) diff --git a/summit/multiview_platform/monoview_classifiers/sgd.py b/summit/multiview_platform/monoview_classifiers/sgd.py index e5f01a95b0cb4cecc6520c056811ba5db3626230..1b1d3375c39527152c767d7a9f86f0e0c0611b00 100644 --- a/summit/multiview_platform/monoview_classifiers/sgd.py +++ b/summit/multiview_platform/monoview_classifiers/sgd.py @@ -12,30 +12,8 @@ classifier_class_name = "SGD" class SGD(SGDClassifier, BaseMonoviewClassifier): """ + This class is an adaptation of scikit-learn's `SGDClassifier <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html>`_ - Parameters - ---------- - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - loss : str , (default = "hinge") - penalty : str, (default = "l2") - - alpha : float, (default = 0.0001) - - kwargs : other arguments - - - Attributes - ---------- - param_names : - - distribs : - - classed_params : - - weird_strings : """ diff --git a/summit/multiview_platform/monoview_classifiers/svm_linear.py b/summit/multiview_platform/monoview_classifiers/svm_linear.py index 40eaa483edb9985219980d416e7ff145dd0f77db..e6f7fb1e2d9f05cd44f41e2db151c9ab27dfdf68 100644 --- a/summit/multiview_platform/monoview_classifiers/svm_linear.py +++ b/summit/multiview_platform/monoview_classifiers/svm_linear.py @@ -11,20 +11,10 @@ classifier_class_name = "SVMLinear" class SVMLinear(SVCClassifier, BaseMonoviewClassifier): - """SVMLinear - - Parameters - ---------- - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - - C : float, optional (default=1.0) - Penalty parameter C of the error term. - - kwargs : others arguments + """ + This class is an adaptation of scikit-learn's `SVC <https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html>`_ + Here, it is the linear kernel version """ def __init__(self, random_state=None, C=1.0, **kwargs): diff --git a/summit/multiview_platform/monoview_classifiers/svm_poly.py b/summit/multiview_platform/monoview_classifiers/svm_poly.py index 86f93db5767159bb2aa259bf89fc66c8a08dc115..a5200f82aa656d760a0eb7ddaf094dbcb52238df 100644 --- a/summit/multiview_platform/monoview_classifiers/svm_poly.py +++ b/summit/multiview_platform/monoview_classifiers/svm_poly.py @@ -13,30 +13,9 @@ classifier_class_name = "SVMPoly" class SVMPoly(SVCClassifier, BaseMonoviewClassifier): """ - Class of SVMPoly for SVC Classifier + This class is an adaptation of scikit-learn's `SVC <https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html>`_ - Parameters - ---------- - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - - C : float, optional (default=1.0) - Penalty parameter C of the error term. - - - degree : - - kwargs : others arguments - - - Attributes - ---------- - - param_names : list of parameters names - - distribs : list of random_state distribution + Here, it is the polynomial kernel version """ def __init__(self, random_state=None, C=1.0, degree=3, **kwargs): diff --git a/summit/multiview_platform/monoview_classifiers/svm_rbf.py b/summit/multiview_platform/monoview_classifiers/svm_rbf.py index 450ed6305458d48d9926f0f92133a24a90fb6004..8e75a3c798a2eaa7a4a8fc211d7594a2d5a8f644 100644 --- a/summit/multiview_platform/monoview_classifiers/svm_rbf.py +++ b/summit/multiview_platform/monoview_classifiers/svm_rbf.py @@ -12,24 +12,9 @@ classifier_class_name = "SVMRBF" class SVMRBF(SVCClassifier, BaseMonoviewClassifier): """ - class SVMRBF for classifier SVCC + This class is an adaptation of scikit-learn's `SVC <https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html>`_ - Parameters - ---------- - random_state : int seed, RandomState instance, or None (default=None) - The seed of the pseudo random number multiview_generator to use when - shuffling the data. - - C : - - kwargs : others arguments - - Attributes - ---------- - - param_names : list of parameters names - - distribs : list of random_state distribution + Here, it is the RBF kernel version """ def __init__(self, random_state=None, C=1.0, **kwargs): diff --git a/summit/multiview_platform/multiview_classifiers/bayesian_inference_fusion.py b/summit/multiview_platform/multiview_classifiers/bayesian_inference_fusion.py index bca25f2b11fb650422ce52247a7efe281ac8a947..7abaacaed2b0decebe5bd33be15a794a91bbd87e 100644 --- a/summit/multiview_platform/multiview_classifiers/bayesian_inference_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/bayesian_inference_fusion.py @@ -8,6 +8,11 @@ classifier_class_name = "BayesianInferenceClassifier" class BayesianInferenceClassifier(LateFusionClassifier): + + """ + + """ + def __init__(self, random_state, classifiers_names=None, classifier_configs=None, nb_cores=1, weights=None, rs=None): diff --git a/summit/multiview_platform/multiview_classifiers/difficulty_fusion.py b/summit/multiview_platform/multiview_classifiers/difficulty_fusion.py index 47dad295d481f12bf66cec0638e3a534ec3905b7..c2531be566a0b6359f5eeb5e9efbaac8bb12e83f 100644 --- a/summit/multiview_platform/multiview_classifiers/difficulty_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/difficulty_fusion.py @@ -8,6 +8,11 @@ classifier_class_name = "DifficultyFusion" class DifficultyFusion(GlobalDiversityFusionClassifier): + """ + This classifier is inspired by Kuncheva, Ludmila & Whitaker, Chris. (2000). Measures of Diversity in Classifier Ensembles. + It find the subset of monoview classifiers with the best difficulty + """ + def diversity_measure(self, classifiers_decisions, combination, y): _, nb_view, nb_samples = classifiers_decisions.shape scores = np.zeros((nb_view, nb_samples), dtype=int) diff --git a/summit/multiview_platform/multiview_classifiers/disagree_fusion.py b/summit/multiview_platform/multiview_classifiers/disagree_fusion.py index abaa19014c1d6193880d62dc9d25db5ca088ac17..dbe295b8fe7246ac298c61c5a38d6f37dc3581e0 100644 --- a/summit/multiview_platform/multiview_classifiers/disagree_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/disagree_fusion.py @@ -8,6 +8,11 @@ classifier_class_name = "DisagreeFusion" class DisagreeFusion(CoupleDiversityFusionClassifier): + """ + This classifier is inspired by Kuncheva, Ludmila & Whitaker, Chris. (2000). Measures of Diversity in Classifier Ensembles. + It find the subset of monoview classifiers with the best disagreement + """ + def diversity_measure(self, first_classifier_decision, second_classifier_decision, _): return np.logical_xor(first_classifier_decision, diff --git a/summit/multiview_platform/multiview_classifiers/double_fault_fusion.py b/summit/multiview_platform/multiview_classifiers/double_fault_fusion.py index c33a19740185af03ddac8311b8fa6c1c794c70d8..d3b5347abe814010c812951425aaccc3f378ff42 100644 --- a/summit/multiview_platform/multiview_classifiers/double_fault_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/double_fault_fusion.py @@ -8,6 +8,13 @@ classifier_class_name = "DoubleFaultFusion" class DoubleFaultFusion(CoupleDiversityFusionClassifier): + """ + This classifier is inspired by + Kuncheva, Ludmila & Whitaker, Chris. (2000). Measures of Diversity in + Classifier Ensembles. + It find the subset of monoview classifiers with the best double fault + """ + def diversity_measure(self, first_classifier_decision, second_classifier_decision, y): return np.logical_and(np.logical_xor(first_classifier_decision, y), diff --git a/summit/multiview_platform/multiview_classifiers/entropy_fusion.py b/summit/multiview_platform/multiview_classifiers/entropy_fusion.py index 56b0e458467f1102f11ad11da6f5e2db652d66f6..6a30b56906e40182e238a7688bda540b75e6a7e6 100644 --- a/summit/multiview_platform/multiview_classifiers/entropy_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/entropy_fusion.py @@ -8,6 +8,11 @@ classifier_class_name = "EntropyFusion" class EntropyFusion(GlobalDiversityFusionClassifier): + """ + This classifier is inspired by Kuncheva, Ludmila & Whitaker, Chris. (2000). Measures of Diversity in Classifier Ensembles. + It find the subset of monoview classifiers with the best entropy + """ + def diversity_measure(self, classifiers_decisions, combination, y): _, nb_view, nb_samples = classifiers_decisions.shape scores = np.zeros((nb_view, nb_samples), dtype=int) diff --git a/summit/multiview_platform/multiview_classifiers/majority_voting_fusion.py b/summit/multiview_platform/multiview_classifiers/majority_voting_fusion.py index 1afed35767fd456d6ce039c3e2b9a010d5b8e688..82e37356ce9f378050ecbd3dcc7b7c3b01ecbb64 100644 --- a/summit/multiview_platform/multiview_classifiers/majority_voting_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/majority_voting_fusion.py @@ -12,6 +12,11 @@ class VotingIndecision(Exception): class MajorityVoting(LateFusionClassifier): + + """ + This classifier is a late fusion that builds a majority vote between the views + """ + def __init__(self, random_state, classifiers_names=None, classifier_configs=None, weights=None, nb_cores=1, rs=None): self.need_probas = False diff --git a/summit/multiview_platform/multiview_classifiers/svm_jumbo_fusion.py b/summit/multiview_platform/multiview_classifiers/svm_jumbo_fusion.py index 4d826efe4b27cd9e00db2f538f8c7595011d3191..f0a7bd6218d45a627cccdde6c36d6fa2da9ff268 100644 --- a/summit/multiview_platform/multiview_classifiers/svm_jumbo_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/svm_jumbo_fusion.py @@ -8,6 +8,11 @@ classifier_class_name = "SVMJumboFusion" class SVMJumboFusion(BaseJumboFusion): + """ + This classifier learns monoview classifiers on each view and then uses an + SVM on their decisions to aggregate them. + """ + def __init__(self, random_state=None, classifiers_names=None, classifier_configs=None, nb_cores=1, weights=None, nb_monoview_per_view=1, C=1.0, kernel="rbf", degree=2, diff --git a/summit/multiview_platform/multiview_classifiers/weighted_linear_early_fusion.py b/summit/multiview_platform/multiview_classifiers/weighted_linear_early_fusion.py index ec86f9b9a9d6f5abc9ccb401fcb0012bb7c52752..9af0183658e2ebbba32f4c894d1d6fffb4bcf762 100644 --- a/summit/multiview_platform/multiview_classifiers/weighted_linear_early_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/weighted_linear_early_fusion.py @@ -13,17 +13,8 @@ classifier_class_name = "WeightedLinearEarlyFusion" class WeightedLinearEarlyFusion(BaseMultiviewClassifier, BaseFusionClassifier): """ - WeightedLinearEarlyFusion - - Parameters - ---------- - random_state - view_weights - monoview_classifier_name - monoview_classifier_config - - Attributes - ---------- + Builds a monoview dataset by concatenating the views (with a weight if + needed) and learns a monoview classifier on the concatenation """ def __init__(self, random_state=None, view_weights=None, @@ -37,10 +28,6 @@ class WeightedLinearEarlyFusion(BaseMultiviewClassifier, BaseFusionClassifier): self.monoview_classifier_config = monoview_classifier_config[ monoview_classifier_name] self.monoview_classifier_config = monoview_classifier_config - # monoview_classifier_module = getattr(monoview_classifiers, - # self.monoview_classifier_name) - # monoview_classifier_class = getattr(monoview_classifier_module, - # monoview_classifier_module.classifier_class_name) self.monoview_classifier = self.init_monoview_estimator( monoview_classifier_name, monoview_classifier_config) self.param_names = ["monoview_classifier_name", diff --git a/summit/multiview_platform/multiview_classifiers/weighted_linear_late_fusion.py b/summit/multiview_platform/multiview_classifiers/weighted_linear_late_fusion.py index 1b7b4c2ff4ae82e5d8b09272debd01b10ef6e0dd..a7f488a1bcac6ffa5c98cf2f98403433344fd84b 100644 --- a/summit/multiview_platform/multiview_classifiers/weighted_linear_late_fusion.py +++ b/summit/multiview_platform/multiview_classifiers/weighted_linear_late_fusion.py @@ -8,6 +8,10 @@ classifier_class_name = "WeightedLinearLateFusion" class WeightedLinearLateFusion(LateFusionClassifier): + + """ + Similar to the majority voting fusion. + """ def __init__(self, random_state, classifiers_names=None, classifier_configs=None, weights=None, nb_cores=1, rs=None): self.need_probas = True