def add(self, micro_cluster): self.n_samples += micro_cluster.n_samples self.linear_sum_timestamp += micro_cluster.linear_sum_timestamp self.squared_sum_timestamp += micro_cluster.squared_sum_timestamp add_dict_values(self.linear_sum, micro_cluster.linear_sum, inplace=True) add_dict_values(self.squared_sum, micro_cluster.squared_sum, inplace=True)
def predict_proba_one(self, x): proba = {c: 0.0 for c in self.classes} if self._root is not None: found_nodes = [self._root] if isinstance(self._root, DTBranch): found_nodes = self._root.traverse(x, until_leaf=True) for leaf in found_nodes: dist = leaf.prediction(x, tree=self) # Option Tree prediction (of sorts): combine the response of all leaves reached # by the instance proba = add_dict_values(proba, dist, inplace=True) proba = normalize_values_in_dict(proba) return proba
def predict_proba_one(self, x): proba = {c: 0.0 for c in self.classes} if self._tree_root is not None: found_nodes = self._filter_instance_to_leaves(x, None, -1) for fn in found_nodes: # parent_branch == -999 means that the node is the root of an alternate tree. # In other words, the alternate tree is a single leaf. It is probably not accurate # enough to be used to predict, so skip it if fn.parent_branch != -999: leaf_node = fn.node if leaf_node is None: leaf_node = fn.parent dist = leaf_node.leaf_prediction(x, tree=self) # Option Tree prediction (of sorts): combine the response of all leaves reached # by the instance proba = add_dict_values(proba, dist, inplace=True) proba = normalize_values_in_dict(proba) return proba