def __init__(self, data, initial_centers, **kwargs):
self.__data = data<EOL>self.__clusters = []<EOL>self.__centers = initial_centers<EOL>self.__membership = []<EOL>self.__tolerance = kwargs.get('<STR_LIT>', <NUM_LIT>)<EOL>self.__itermax = kwargs.get('<STR_LIT>', <NUM_LIT:200>)<EOL>self.__m = kwargs.get('<STR_LIT:m>', <NUM_LIT:2>)<EOL>self.__degree = <NUM_LIT> / (self.__m - <NUM_LIT:1>)<EOL>self.__ccore = kwargs.get('<STR_LIT>', True)<EOL>if self.__ccore is True:<EOL><INDENT>self.__ccore = ccore_library.workable()<EOL><DEDENT>
!
        @brief Initialize Fuzzy C-Means algorithm.

        @param[in] data (array_like): Input data that is presented as array of points (objects), each point should be represented by array_like data structure.
        @param[in] initial_centers (array_like): Initial coordinates of centers of clusters that are represented by array_like data structure: [center1, center2, ...].
        @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'tolerance', 'itermax', 'm').

        <b>Keyword Args:</b><br>
            - ccore (bool): Defines should be CCORE library (C++ pyclustering library) used instead of Python code or not.
            - tolerance (float): Stop condition: if maximum value of change of centers of clusters is less than tolerance then algorithm stops processing.
            - itermax (uint): Maximum number of iterations that is used for clustering process (by default: 200).
            - m (float): Hyper-parameter that controls how fuzzy the cluster will be. The higher it is, the fuzzier the cluster will be in the end.
               This parameter should be greater than 1 (by default: 2).