Hi,

I'm trying to use a custom distance metric for the self-organizing map in PyMVPA, and I'm having some difficulty. The documentation says that I can define the SOM as follows:

som = SimpleSOMMapper(size, niter, learning_rate=something,distance_metric=d)

where d is a function such that distance_between_x_and_y = d(x,y), and presumably x and y are vectors and d returns a scalar.

However, the SOM package appears to pass a matrix to distance_metric, and it's unclear what the expected inputs and outputs from distance_metric are supposed to be in this case.

For instance the following code:

def jeffries(x,y):
    entropy_xy = sp.stats.entropy(x,y)
    entropy_yx = sp.stats.entropy(y,x)
    jeffries_entropy = (entropy_xy+entropy_yx)/2.0
    return jeffries_entropy
som = SimpleSOMMapper(size, niter, learning_rate=something,distance_metric=jeffries)

produces this error:

PyMVPA/mvpa2/mappers/som.pyc in _train(self, samples)
    159                     np.hstack((
    160                         # upper left
--> 161 k[self._dqdshape[0]:0:-1, self._dqdshape[1]:0:-1],
    162                         # upper right
163 k[self._dqdshape[0]:0:-1, :self._dqdshape[3]])),

IndexError: too many indices for array

Does anyone have any experience with this issue?

Dave


_______________________________________________
Pkg-ExpPsy-PyMVPA mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa

Reply via email to