> the creation of the adjacency matrix, the distance matrix and the graph diameter attribute should all happen in the fit method.

Why? These variables are all parameters related to the SOM grid, not the data. They are completely independent of the data...

> Finally I would rename adjacency to adjacency_resolution and set its default value in the __init__ to adjacency_resolution=4 by default and automatically set adjacency matrix match a grid with shape (adjacency_resolution,) * n_features in the fit method as the number of features can be introspected at that point. This way the constructor parameters can all be made data independent and the estimator can accept data with any number of features.

The grid is already data independent (SOM grid shape doesn't have to be related to the data in any particular way). `adjacency` can not be named `adjacency_resolution`, because that's not what it is. It is *either* and adjacency *matrix* of an abritrary graph, *or* the dimensions of a hyper-rectangular grid (in any number of dimensions).

>The adjacency parameter should be stored unchanged on self in the __init__ method ... This is what is causing the clone test to fail.

Am I right that this is the problem, and not the storage of the grid matrices? If so, I will try to fix that.

> Also attributes set in the fit method should be suffixed with _ sign to be distinguished from the original hyper-parameters.

Ok, I'll sort that out.