gemclus.mlp
.MLPMMD¶
- class gemclus.mlp.MLPMMD(n_clusters=3, max_iter=1000, learning_rate=0.001, n_hidden_dim=20, kernel='linear', ovo=False, solver='adam', batch_size=None, verbose=False, random_state=None, kernel_params=None)[source]¶
Implementation of the maximisation of the MMD GEMINI using a two-layer neural network as a clustering distribution \(p(y|x)\).
- Parameters:
- n_clustersint, default=3
The maximum number of clusters to form as well as the number of output neurons in the neural network.
- max_iter: int, default=1000
Maximum number of epochs to perform gradient descent in a single run.
- learning_rate: float, default=1e-3
Initial learning rate used. It controls the step-size in updating the weights.
- n_hidden_dim: int, default=20
The number of neurons in the hidden layer of the neural network.
- kernel: {‘additive_chi2’, ‘chi2’, ‘cosine’,’linear’,’poly’,’polynomial’,’rbf’,’laplacian’,’sigmoid’, ‘precomputed’},
default=’linear’ The kernel to use in combination with the MMD objective. It corresponds to one value of KERNEL_PARAMS. Currently, all kernel parameters are the default ones. If the kernel is set to ‘precomputed’, then a custom kernel matrix must be passed to the argument y of fit, fit_predict and/or score.
- ovo: bool, default=False
Whether to run the model using the MMD OvA (False) or the MMD OvO (True).
- solver: {‘sgd’,’adam’}, default=’adam’
The solver for weight optimisation.
‘sgd’ refers to stochastic gradient descent.
‘adam’ refers to a stochastic gradient-based optimiser proposed by Kingma, Diederik and Jimmy Ba.
- batch_size: int, default=None
The size of batches during gradient descent training. If set to None, the whole data will be considered.
- verbose: bool, default=False
Whether to print progress messages to stdout
- random_state: int, RandomState instance, default=None
Determines random number generation for weights and bias initialisation. Pass an int for reproducible results across multiple function calls.
- kernel_params: dict, default=None
A dictionary of keyword arguments to pass to the chosen kernel function.
- Attributes:
- W1_: ndarray, shape (n_features, n_hidden_dim)
The linear weights of the first layer
- b1_: ndarray of shape (1, n_hidden_dim)
The biases of the first layer
- W2_: ndarray of shape (n_hidden_dim, n_clusters)
The linear weights of the hidden layer
- b2_: ndarray of shape (1, n_clusters)
The biases of the hidden layer
- optimiser_: `AdamOptimizer` or `SGDOptimizer`
The optimisation algorithm used for training depending on the chosen solver parameter.
- labels_: ndarray of shape (n_samples)
The labels that were assigned to the samples passed to the
fit()
method.- n_iter_: int
The number of iterations that the model took for converging.
- H_: ndarray of shape (n_samples, n_hidden_dim)
The hidden representation of the samples after fitting.OvA
See also
MLPModel
two-layer neural network trained for clustering with any GEMINI
MLPWasserstein
two-layer neural network trained for clustering with the Wasserstein GEMINI
References
- GEMINI - Generalised Mutual Information for Discriminative Clustering
Louis Ohl, Pierre-Alexandre Mattei, Charles Bouveyron, Warith Harchaoui, Mickaël Leclercq, Arnaud Droit, Frederic Precioso
Examples
>>> from sklearn.datasets import load_iris >>> from gemclus.mlp import MLPMMD >>> X,y=load_iris(return_X_y=True) >>> clf = MLPMMD(random_state=0).fit(X) >>> clf.predict(X[:2,:]) array([2, 2]) >>> clf.predict_proba(X[:2,:]).shape (2, 3) >>> clf.score(X) 1.7592155845
- __init__(n_clusters=3, max_iter=1000, learning_rate=0.001, n_hidden_dim=20, kernel='linear', ovo=False, solver='adam', batch_size=None, verbose=False, random_state=None, kernel_params=None)[source]¶
- fit(X, y=None)¶
Compute GEMINI clustering.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
Training instances to cluster.
- yndarray of shape (n_samples, n_samples), default=None
Use this parameter to give a precomputed affinity metric if the option “precomputed” was passed during construction. Otherwise, it is not used and present here for API consistency by convention.
- Returns:
- selfobject
Fitted estimator.
- fit_predict(X, y=None)¶
Compute GEMINI clustering and returns the predicted clusters.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
Training instances to cluster.
- yndarray of shape (n_samples, n_samples), default=None
Use this parameter to give a precomputed affinity metric if the option “precomputed” was passed during construction. Otherwise, it is not used and present here for API consistency by convention.
- Returns:
- y_predndarray of shape (n_samples,)
Vector containing the cluster label for each sample.
- get_gemini()[source]¶
Initialise a
gemclus.GEMINI
instance that will be used to train the model.- Returns:
- gemini: a GEMINI instance
- get_metadata_routing()¶
Get metadata routing of this object.
Please check User Guide on how the routing mechanism works.
- Returns:
- routingMetadataRequest
A
MetadataRequest
encapsulating routing information.
- get_params(deep=True)¶
Get parameters for this estimator.
- Parameters:
- deepbool, default=True
If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns:
- paramsdict
Parameter names mapped to their values.
- predict(X)¶
Return the cluster membership of samples. This can only be called after the model was fit to some data.
- Parameters:
- X{array-like, sparse matrix}, shape (n_samples, n_features)
The input samples.
- Returns:
- yndarray of shape (n_samples,)
The label for each sample is the label of the closest sample seen during fit.
- predict_proba(X)¶
Probability estimates that are the output of the neural network p(y|x). The returned estimates for all classes are ordered by the label of classes.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
Vector to be scored, where n_samples is the number of samples and n_features is the number of features.
- Returns:
- Tarray-like of shape (n_samples, n_clusters)
Returns the probability of the sample for each cluster in the model.
- score(X, y=None)¶
Return the value of the GEMINI evaluated on the given test data.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
Test samples.
- yndarray of shape (n_samples, n_samples), default=None
Use this parameter to give a precomputed affinity metric if the option “precomputed” was passed during construction. Otherwise, it is not used and present here for API consistency by convention.
- Returns:
- scorefloat
GEMINI evaluated on the output of
self.predict(X)
.
- set_params(**params)¶
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as
Pipeline
). The latter have parameters of the form<component>__<parameter>
so that it’s possible to update each component of a nested object.- Parameters:
- **paramsdict
Estimator parameters.
- Returns:
- selfestimator instance
Estimator instance.
Examples using gemclus.mlp.MLPMMD
¶
An introducing example to clustering with an MLP and the MMD GEMINI
Comparative clustering of circles dataset with kernel change