Code Duplication    Length = 26-30 lines in 2 locations

pyclustering/cluster/kmedoids.py 1 location

@@ 101-130 (lines=30) @@
98
    """
99
    
100
    
101
    def __init__(self, data, initial_index_medoids, tolerance=0.001, ccore=True, **kwargs):
102
        """!
103
        @brief Constructor of clustering algorithm K-Medoids.
104
        
105
        @param[in] data (list): Input data that is presented as list of points (objects), each point should be represented by list or tuple.
106
        @param[in] initial_index_medoids (list): Indexes of intial medoids (indexes of points in input data).
107
        @param[in] tolerance (double): Stop condition: if maximum value of distance change of medoids of clusters is less than tolerance than algorithm will stop processing.
108
        @param[in] ccore (bool): If specified than CCORE library (C++ pyclustering library) is used for clustering instead of Python code.
109
        @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'metric', 'data_type').
110
111
        <b>Keyword Args:</b><br>
112
            - metric (distance_metric): Metric that is used for distance calculation between two points.
113
            - data_type (string): Data type of input sample 'data' that is processed by the algorithm ('points', 'distance_matrix').
114
115
        """
116
        self.__pointer_data = data
117
        self.__clusters = []
118
        self.__medoid_indexes = initial_index_medoids
119
        self.__tolerance = tolerance
120
121
        self.__metric = kwargs.get('metric', distance_metric(type_metric.EUCLIDEAN_SQUARE))
122
        if self.__metric is None:
123
            self.__metric = distance_metric(type_metric.EUCLIDEAN_SQUARE)
124
125
        self.__data_type = kwargs.get('data_type', 'points')
126
        self.__distance_calculator = self.__create_distance_calculator()
127
128
        self.__ccore = ccore and self.__metric.get_type() != type_metric.USER_DEFINED
129
        if self.__ccore:
130
            self.__ccore = ccore_library.workable()
131
132
133
    def process(self):

pyclustering/cluster/kmedians.py 1 location

@@ 62-87 (lines=26) @@
59
    
60
    """
61
    
62
    def __init__(self, data, initial_centers, tolerance=0.001, ccore=True, **kwargs):
63
        """!
64
        @brief Constructor of clustering algorithm K-Medians.
65
        
66
        @param[in] data (list): Input data that is presented as list of points (objects), each point should be represented by list or tuple.
67
        @param[in] initial_centers (list): Initial coordinates of medians of clusters that are represented by list: [center1, center2, ...].
68
        @param[in] tolerance (double): Stop condition: if maximum value of change of centers of clusters is less than tolerance than algorithm will stop processing
69
        @param[in] ccore (bool): Defines should be CCORE library (C++ pyclustering library) used instead of Python code or not.
70
        @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'metric').
71
72
        <b>Keyword Args:</b><br>
73
            - metric (distance_metric): Metric that is used for distance calculation between two points.
74
        
75
        """
76
        self.__pointer_data = data
77
        self.__clusters = []
78
        self.__medians = initial_centers[:]
79
        self.__tolerance = tolerance
80
81
        self.__metric = kwargs.get('metric', distance_metric(type_metric.EUCLIDEAN_SQUARE))
82
        if self.__metric is None:
83
            self.__metric = distance_metric(type_metric.EUCLIDEAN_SQUARE)
84
85
        self.__ccore = ccore and self.__metric.get_type() != type_metric.USER_DEFINED
86
        if self.__ccore:
87
            self.__ccore = ccore_library.workable()
88
89
90
    def process(self):