INNER CODE UNIT · Python
__init__
AllAlgorithms/python · classification/fcm.py:7
def __init__(self, n_clusters, initial_centers, data, max_iter=250, m=2, error=1e-5):
assert m > 1
#assert initial_centers.shape[0] == n_clusters
self.U = None
self.centers = initial_centers
self.max_iter = max_iter
self.m = m
self.error = error
self.data = data
def membership(self, data, centers):
U_temp = cdist(data, centers, 'euclidean')
U_temp = numpy.power(U_temp, 2/(self.m - 1))
denominator_ = U_temp.reshape(
(data.shape[0], 1, -1)).repeat(U_temp.shape[-1], axis=1)
denominator_ = U_temp[:, :, numpy.newaxis] / denominator_
return 1 / denominator_.sum(2)