..
   Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com

   This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
   International License. To view a copy of this license, visit
   http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative
   Commons, PO Box 1866, Mountain View, CA 94042, USA.

.. uml::

	class Dataset {
	}

	abstract class BaseMLAlgo {
	 +SHORT_ALGO_NAME
	 +LIBRARY
	 +algo
	 +is_trained
	 +learning_set
	 +parameters
	 +transformer
	 +DataFormatters
	 +learn()
	 +save()
	 #save_algo()
	 +load_algo()
	 #get_objects_to_save()
	}

	abstract class BaseMLUnsupervisedAlgo {
	 +var_names
	 +learn()
	 #fit()
	}

	abstract class BaseClusterer {
	 +n_clusters
	 +labels
	 +learn()
	 +predict()
	 +predict_proba()
	 #predict_proba()
	 #predict_proba_hard()
	 #predict_proba_soft()
	}

	abstract class BaseMLSupervisedAlgo {
	 +input_names
	 +input_dimension
	 +output_names
	 +output_dimension
	 +DataFormatters
	 +learn()
	 +predict()
	 #fit()
	 #predict()
	 #get_objects_to_save()
	}

	abstract class BaseClassifier {
	 +n_classes
	 +learn()
	 +predict_proba()
	 #predict_proba()
	 #predict_proba_hard()
	 #predict_proba_soft()
	 #get_objects_to_save()
	}

	abstract class BaseRegressor {
	 +DataFormatters
	 +predict_raw()
	 +predict_jacobian()
	 #predict_jacobian()
	}

	abstract class BaseMLAlgoQuality

	abstract class SurrogateDiscipline {
	 +input_grammar
	 +output_grammar
	 +execute()
	 +linearize()
	}

	abstract class BaseTransformer {
	 +duplicate()
	 +fit()
	 +transform()
	 +inverse_transform()
	 +fit_transform()
	 +compute_jacobian()
	 +compute_jacobian_inverse()
	}


	BaseMLAlgo *-- Dataset
	BaseMLAlgo *-- BaseTransformer
	BaseMLAlgo <|-down- BaseMLUnsupervisedAlgo
	BaseMLAlgo <|-down- BaseMLSupervisedAlgo
	BaseMLUnsupervisedAlgo <|-down- BaseClusterer
	BaseMLSupervisedAlgo <|-- BaseRegressor
	BaseMLSupervisedAlgo <|-- BaseClassifier
	BaseMLAlgoQuality *-left- BaseMLAlgo
	SurrogateDiscipline *-down- BaseRegressor
