def __init__(self, data, number_clusters, link = None, ccore = True):
self.__pointer_data = data<EOL>self.__number_clusters = number_clusters<EOL>self.__similarity = link<EOL>if self.__similarity is None:<EOL><INDENT>self.__similarity = type_link.CENTROID_LINK<EOL><DEDENT>self.__clusters = []<EOL>self.__ccore = ccore<EOL>if (self.__ccore):<EOL><INDENT>self.__ccore = ccore_library.workable()<EOL><DEDENT>if (self.__similarity == type_link.CENTROID_LINK):<EOL><INDENT>self.__centers = self.__pointer_data.copy()<EOL><DEDENT>
!
        @brief Constructor of agglomerative hierarchical algorithm.

        @param[in] data (list): Input data that is presented as a list of points (objects), each point should be represented by list, for example
                    [[0.1, 0.2], [0.4, 0.5], [1.3, 0.9]].
        @param[in] number_clusters (uint): Number of clusters that should be allocated.
        @param[in] link (type_link): Link type that is used for calculation similarity between objects and clusters, if it is not specified centroid link will be used by default.
        @param[in] ccore (bool): Defines should be CCORE (C++ pyclustering library) used instead of Python code or not (by default it is 'False').