an implementation of categorize code

An implementation of the categorize code.

Here is the python, presumably it is correct, I haven't tested it recently:
def metric_mbr(metric,x,thresh,data):
  for elt in data:
    if metric(x,elt) <= thresh: -- depending on if 0 or 1 means exact match, you may want to swap to: >= thresh 
      return True
  return False

def categorize_list(data,metric,thresh):
  out_list = []
  for x in data:
    n = 0
    del_list = []
    for i in range(len(out_list)):
      if metric_mbr(metric,x,thresh,out_list[i]):
        if n == 0:
          out_list[i].append(x)
          idx = i
          n = 1
        else:
          out_list[idx] += out_list[i]
          del_list.append(i)
    if n == 0:
      out_list.append([x])
    else:
      out_list = [x for index, x in enumerate(out_list) if index not in del_list]
  return out_list
And that's it. BTW, yeah O(n^3) I think!


Home
previous: introducing bridging sets
next: a bko version of categorize

updated: 19/12/2016
by Garry Morrison
email: garry -at- semantic-db.org