gemseo.mlearning.core.quality.base_ml_algo_quality module#
Measuring the quality of a machine learning algorithm.
- class BaseMLAlgoQuality(algo, fit_transformers=True)[source]#
Bases:
object
The base class to assess the quality of a machine learning algorithm.
This measure can be minimized (e.g.
MSEMeasure
) or maximized (e.g.R2Measure
).It can be evaluated from the training dataset, from a test dataset or using resampling techniques such as boostrap, cross-validation or leave-one-out.
The machine learning algorithm is usually trained. If not but required by the evaluation technique, the quality measure will train it.
Lastly, the transformers of the algorithm fitted from the training dataset can be used as is by the resampling methods or re-fitted for each algorithm trained on a subset of the training dataset.
- Parameters:
algo (BaseMLAlgo) -- A machine learning algorithm.
fit_transformers (bool) --
Whether to re-fit the transformers when using resampling techniques. If
False
, use the transformers of the algorithm fitted from the whole training dataset.By default it is set to True.
- class EvaluationFunctionName(*values)[source]#
Bases:
StrEnum
The name of the function associated with an evaluation method.
- BOOTSTRAP = 'compute_bootstrap_measure'#
- KFOLDS = 'compute_cross_validation_measure'#
- LEARN = 'compute_learning_measure'#
- LOO = 'compute_leave_one_out_measure'#
- TEST = 'compute_test_measure'#
- class EvaluationMethod(*values)[source]#
Bases:
StrEnum
The evaluation method.
- BOOTSTRAP = 'BOOTSTRAP'#
The name of the method to evaluate the measure by bootstrap.
- KFOLDS = 'KFOLDS'#
The name of the method to evaluate the measure by cross-validation.
- LEARN = 'LEARN'#
The name of the method to evaluate the measure on the training dataset.
- LOO = 'LOO'#
The name of the method to evaluate the measure by leave-one-out.
- TEST = 'TEST'#
The name of the method to evaluate the measure on a test dataset.
- classmethod is_better(val1, val2)[source]#
Compare the quality between two values.
This method returns
True
if the first one is better than the second one.For most measures, a smaller value is "better" than a larger one (MSE etc.). But for some, like an R2-measure, higher values are better than smaller ones. This comparison method correctly handles this, regardless of the type of measure.
- abstractmethod compute_bootstrap_measure(n_replicates=100, samples=(), multioutput=True, seed=None, store_resampling_result=False)[source]#
Evaluate the quality of the ML model using the bootstrap technique.
- Parameters:
n_replicates (int) --
The number of bootstrap replicates.
By default it is set to 100.
The indices of the learning samples. If empty, use the whole training dataset.
By default it is set to ().
multioutput (bool) --
Whether the quality measure is returned for each component of the outputs. Otherwise, the average quality measure.
By default it is set to True.
seed (int | None) -- The seed of the pseudo-random number generator. If
None
, an unpredictable generator will be used.store_resampling_result (bool) --
Whether to store the \(n\) machine learning algorithms and associated predictions generated by the resampling stage where \(n\) is the number of bootstrap replicates.
By default it is set to False.
- Returns:
The quality of the ML model.
- Return type:
float | ndarray[Any, dtype[floating[Any]]] | dict[str, ndarray[Any, dtype[floating[Any]]]]
- abstractmethod compute_cross_validation_measure(n_folds=5, samples=(), multioutput=True, randomize=True, seed=None, store_resampling_result=False)[source]#
Evaluate the quality of the ML model using the k-folds technique.
- Parameters:
n_folds (int) --
The number of folds.
By default it is set to 5.
The indices of the learning samples. If empty, use the whole training dataset.
By default it is set to ().
multioutput (bool) --
Whether the quality measure is returned for each component of the outputs. Otherwise, the average quality measure.
By default it is set to True.
randomize (bool) --
Whether to shuffle the samples before dividing them in folds.
By default it is set to True.
seed (int | None) -- The seed of the pseudo-random number generator. If
None
, an unpredictable generator is used.store_resampling_result (bool) --
Whether to store the \(n\) machine learning algorithms and associated predictions generated by the resampling stage where \(n\) is the number of folds.
By default it is set to False.
- Returns:
The quality of the ML model.
- Return type:
float | ndarray[Any, dtype[floating[Any]]] | dict[str, ndarray[Any, dtype[floating[Any]]]]
- abstractmethod compute_learning_measure(samples=(), multioutput=True)[source]#
Evaluate the quality of the ML model from the training dataset.
- Parameters:
The indices of the learning samples. If empty, use the whole training dataset.
By default it is set to ().
multioutput (bool) --
Whether the quality measure is returned for each component of the outputs. Otherwise, the average quality measure.
By default it is set to True.
- Returns:
The quality of the ML model.
- Return type:
float | ndarray[Any, dtype[floating[Any]]] | dict[str, ndarray[Any, dtype[floating[Any]]]]
- compute_leave_one_out_measure(samples=(), multioutput=True, store_resampling_result=True)[source]#
Evaluate the quality of the ML model using the leave-one-out technique.
- Parameters:
The indices of the learning samples. If empty, use the whole training dataset.
By default it is set to ().
multioutput (bool) --
Whether the quality measure is returned for each component of the outputs. Otherwise, the average quality measure.
By default it is set to True.
store_resampling_result (bool) --
Whether to store the \(n\) machine learning algorithms and associated predictions generated by the resampling stage where \(n\) is the number of learning samples.
By default it is set to True.
- Returns:
The quality of the ML model.
- Return type:
float | ndarray[Any, dtype[floating[Any]]] | dict[str, ndarray[Any, dtype[floating[Any]]]]
- abstractmethod compute_test_measure(test_data, samples=(), multioutput=True)[source]#
Evaluate the quality of the ML model from a test dataset.
- Parameters:
test_data (Dataset) -- The test dataset.
The indices of the learning samples. If empty, use the whole training dataset.
By default it is set to ().
multioutput (bool) --
Whether the quality measure is returned for each component of the outputs. Otherwise, the average quality measure.
By default it is set to True.
- Returns:
The quality of the ML model.
- Return type:
float | ndarray[Any, dtype[floating[Any]]] | dict[str, ndarray[Any, dtype[floating[Any]]]]
- algo: BaseMLAlgo#
The machine learning algorithm whose quality we want to measure.