Example #1
0
def learn_metal_cdtw(parentLabels, parent, childLabels, child, 
                     symmetric, squared, parameters=None):
    """learn optimal parameters for gem on metal data"""
    
    if parameters == None:
        parameters = np.array(range(21))*0.01
        
    errors = []
    

    for relative_window in parameters:
    
        window = int(np.round(len(parent[0])*relative_window))
    
        func = lambda query, subject: dist.cdtw(query, subject, window, squared)
        e, l = c.obtain_1NN_error(parentLabels, parent, 
                                  childLabels, child, func)
        errors.append((e, (relative_window, squared)))
        print errors[-1]
        
    errs = list(sorted(errors, key=lambda x: x[0][0]))
    
    # pick only the best and take parameter in the "middle"
    best = filter(lambda (x, y): x[0]==errs[0][0][0], errs)
    best.sort(key=lambda (x, y): y[0])
    best = best[len(best)/2]
   
    return best, errs
Example #2
0
def learn_metal_cdtw(parentLabels,
                     parent,
                     childLabels,
                     child,
                     symmetric,
                     squared,
                     parameters=None):
    """learn optimal parameters for gem on metal data"""

    if parameters == None:
        parameters = np.array(range(21)) * 0.01

    errors = []

    for relative_window in parameters:

        window = int(np.round(len(parent[0]) * relative_window))

        func = lambda query, subject: dist.cdtw(query, subject, window, squared
                                                )
        e, l = c.obtain_1NN_error(parentLabels, parent, childLabels, child,
                                  func)
        errors.append((e, (relative_window, squared)))
        print errors[-1]

    errs = list(sorted(errors, key=lambda x: x[0][0]))

    # pick only the best and take parameter in the "middle"
    best = filter(lambda (x, y): x[0] == errs[0][0][0], errs)
    best.sort(key=lambda (x, y): y[0])
    best = best[len(best) / 2]

    return best, errs
Example #3
0
def loocv_cdtw(loocvLabels, loocvSet, relative_window, squared):
    """calculate LOOCV error rate for given window  on a given set"""
    
    error, window = 0, int(np.round(relative_window*len(loocvSet[0])))
    
    # 1NN with Leave One Out Cross Validation
    for index, (queryLabel, query) in enumerate(zip(loocvLabels, loocvSet)):
        search = np.vstack((loocvSet[:index], loocvSet[index+1:]))
        labels = np.hstack((loocvLabels[:index], loocvLabels[index+1:]))

        vals =[dist.cdtw(query, subject, window, squared) for subject in search]
        best = np.array(vals).argmin()
        
        if queryLabel != labels[best]:
            error +=1
    
    return error, len(loocvSet), float(error)/len(loocvSet)
Example #4
0
def loocv_cdtw(loocvLabels, loocvSet, relative_window, squared):
    """calculate LOOCV error rate for given window  on a given set"""

    error, window = 0, int(np.round(relative_window * len(loocvSet[0])))

    # 1NN with Leave One Out Cross Validation
    for index, (queryLabel, query) in enumerate(zip(loocvLabels, loocvSet)):
        search = np.vstack((loocvSet[:index], loocvSet[index + 1:]))
        labels = np.hstack((loocvLabels[:index], loocvLabels[index + 1:]))

        vals = [
            dist.cdtw(query, subject, window, squared) for subject in search
        ]
        best = np.array(vals).argmin()

        if queryLabel != labels[best]:
            error += 1

    return error, len(loocvSet), float(error) / len(loocvSet)