def fit(self, series, *args, **kwargs):
self.series = series
self.linkage = []
new_nodes = {i: i for i in range(len(series))}
if self._model.merge_hook:
old_merge_hook = self._model.merge_hook
else:
old_merge_hook = None
def merge_hook(from_idx, to_idx, distance):
# print('merge_hook', from_idx, to_idx)
new_idx = len(self.series) + len(self.linkage)
# print('adding to linkage: ', new_nodes[from_idx], new_nodes[to_idx], distance, 0)
if new_nodes[from_idx] is None:
raise Exception('Trying to merge series that is already merged')
self.linkage.append((new_nodes[from_idx], new_nodes[to_idx], distance, 0))
new_nodes[to_idx] = new_idx
new_nodes[from_idx] = None
if old_merge_hook:
old_merge_hook(from_idx, to_idx, distance)
self._model.merge_hook = merge_hook
result = self._model.fit(series, *args, **kwargs)
self._model.merge_hook = old_merge_hook
return result
评论列表
文章目录