silhouette module¶
The silhouette coefficient to measure the quality of a clustering algorithm.
The silhouette
module implements the
concept of silhouette coefficient measure for machine learning algorithms.
This concept is implemented through the
SilhouetteMeasure
class and
overloads the MLClusteringMeasure._compute_measure()
method.
The silhouette coefficient is defined for each point as the difference between the average distance from the point to each of the other points in its cluster and the average distance from the point to each of the points in the nearest cluster different from its own.
More formally, the silhouette coefficient \(s_i\) of a point \(x_i\) is given by
where \(k_i\) is the index of the cluster to which \(x_i\) belongs, \(K\) is the number of clusters, \(C_k\) is the set of indices of points belonging to the cluster \(k\) (\(k=1,\\cdots,K\)), and \(C_k = \\sum_{j\\in C_k} 1\) is the number of points in the cluster \(k\), \(k=1,\\cdots,K\).
Classes:

The silhouette coefficient measure for machine learning. 
 class gemseo.mlearning.qual_measure.silhouette.SilhouetteMeasure(algo)[source]¶
Bases:
gemseo.mlearning.qual_measure.cluster_measure.MLPredictiveClusteringMeasure
The silhouette coefficient measure for machine learning.
 Parameters
algo (MLPredictiveClusteringAlgo) – A machine learning algorithm for clustering.
 Return type
None
Attributes:
Methods:
evaluate
([method, samples])Evaluate the quality measure.
evaluate_bootstrap
([n_replicates, samples, ...])Evaluate the quality measure using the bootstrap technique.
evaluate_kfolds
([n_folds, samples, ...])Evaluate the quality measure using the kfolds technique.
evaluate_learn
([samples, multioutput])Evaluate the quality measure using the learning dataset.
evaluate_loo
([samples, multioutput])Evaluate the quality measure using the leaveoneout technique.
evaluate_test
(test_data[, samples, multioutput])Evaluate the quality measure using a test dataset.
is_better
(val1, val2)Compare the quality between two values.
 BOOTSTRAP = 'bootstrap'¶
 KFOLDS = 'kfolds'¶
 LEARN = 'learn'¶
 LOO = 'loo'¶
 SMALLER_IS_BETTER = False¶
 TEST = 'test'¶
 evaluate(method='learn', samples=None, **options)¶
Evaluate the quality measure.
 Parameters
method (str) –
The name of the method to evaluate the quality measure.
By default it is set to learn.
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
**options (Optional[Union[Sequence[int], bool, int, gemseo.core.dataset.Dataset]]) – The options of the estimation method (e.g. ‘test_data’ for
method –
one ('n_replicates' for the bootstrap) –
...) –
 Returns
The value of the quality measure.
 Raises
ValueError – If the name of the method is unknown.
 Return type
Union[float, numpy.ndarray]
 evaluate_bootstrap(n_replicates=100, samples=None, multioutput=True)[source]¶
Evaluate the quality measure using the bootstrap technique.
 Parameters
n_replicates (int) –
The number of bootstrap replicates.
By default it is set to 100.
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
multioutput (bool) –
If True, return the quality measure for each output component. Otherwise, average these measures.
By default it is set to True.
 Returns
The value of the quality measure.
 Return type
Union[float, numpy.ndarray]
 evaluate_kfolds(n_folds=5, samples=None, multioutput=True, randomize=False)[source]¶
Evaluate the quality measure using the kfolds technique.
 Parameters
n_folds (int) –
The number of folds.
By default it is set to 5.
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
multioutput (bool) –
If True, return the quality measure for each output component. Otherwise, average these measures.
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 False.
 Returns
The value of the quality measure.
 Return type
Union[float, numpy.ndarray]
 evaluate_learn(samples=None, multioutput=True)¶
Evaluate the quality measure using the learning dataset.
 Parameters
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
multioutput (bool) –
Whether to return the quality measure for each output component. If not, average these measures.
By default it is set to True.
 Returns
The value of the quality measure.
 Return type
Union[float, numpy.ndarray]
 evaluate_loo(samples=None, multioutput=True)¶
Evaluate the quality measure using the leaveoneout technique.
 Parameters
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
multioutput (bool) –
If True, return the quality measure for each output component. Otherwise, average these measures.
By default it is set to True.
 Returns
The value of the quality measure.
 Return type
Union[float, numpy.ndarray]
 evaluate_test(test_data, samples=None, multioutput=True)[source]¶
Evaluate the quality measure using a test dataset.
 Parameters
samples (Optional[Sequence[int]]) –
The indices of the learning samples. If None, use the whole learning dataset.
By default it is set to None.
multioutput (bool) –
If True, return the quality measure for each output component. Otherwise, average these measures.
By default it is set to True.
test_data (gemseo.core.dataset.Dataset) –
 Returns
The value of the quality measure.
 Return type
Union[float, numpy.ndarray]
 classmethod is_better(val1, val2)¶
Compare the quality between two values.
This methods 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 R2measure, higher values are better than smaller ones. This comparison method correctly handles this, regardless of the type of measure.
 Parameters
val1 (float) – The value of the first quality measure.
val2 (float) – The value of the second quality measure.
 Returns
Whether val1 is of better quality than val2.
 Return type
bool