def __init__(self, amount_clusters, dimension, cluster_sizes, cluster_centers=None, cluster_width=<NUM_LIT:1.0>):
self.__amount_clusters = amount_clusters<EOL>self.__dimension = dimension<EOL>self.__cluster_sizes = cluster_sizes<EOL>if not isinstance(self.__cluster_sizes, collections.Iterable):<EOL><INDENT>self.__cluster_sizes = [self.__cluster_sizes] * amount_clusters<EOL><DEDENT>self.__cluster_width = cluster_width<EOL>if not isinstance(self.__cluster_width, collections.Iterable):<EOL><INDENT>self.__cluster_width = [self.__cluster_width] * amount_clusters<EOL><DEDENT>self.__cluster_centers = cluster_centers<EOL>if self.__cluster_centers is None:<EOL><INDENT>self.__cluster_centers = self.__generate_cluster_centers(self.__cluster_width)<EOL><DEDENT>
!
        @brief Constructs data generator for generating data-sets.

        @param[in] amount_clusters (uint): Amount of clusters that should be generated.
        @param[in] dimension (uint): Dimension of each generated point.
        @param[in] cluster_sizes (uint|array_like): Size of each cluster. In case of 'array_like' input clusters with
                    corresponding sizes are generated.
        @param[in] cluster_centers (array_like): Optional parameter that defines cluster centers (means).
        @param[in] cluster_width (uint|array_like): Optional parameter that defines cluster width (standard deviation).
                    In case of 'array_like' input each cluster has own standard deviation.