1. A method, comprising: determining, by an apparatus, cluster centers in a first data structure, wherein the first data structure comprises a lattice structure of weight vectors that create an approximate representation of a plurality of input data points, and wherein a plurality of the weight vectors represents a single non-linear cluster; performing, by the apparatus, a first iterative process with iterations each including determining a winner weight for each data point and then updating each weight vector corresponding to the winner weight with a first neighborhood function and a corresponding first coefficient updated in a second iterative process such that the weight vectors move toward the cluster centers; performing, by the apparatus, the second iterative process with iterations each including updating said corresponding first coefficient in a second data structure by utilizing a second neighborhood function and the winner weight determined in the first iterative process; and determining by the apparatus, based on the second data structure, several sets of weight vectors in said lattice structure such that in each set, the weight vectors correspond to the same cluster centers of the input data points, wherein the first coefficient is limited to a range, the first neighborhood function gives only positive values, and the second neighborhood function gives negative values in a distance range between 0 and 1.