Beispiel #1
0
def compute_S(M):
    n = 26
    
    m = 2*(26*26*27)/2
    X = zeros((m,(n*(n+1))/2))
    Y = zeros(m)
    
    
    r = 0
    for i in range(n):
        for j in range(n):
            for k in range(j+1):
                X[r][to_in(i,j)]=1.
                X[r][to_in(i,k)]=-1.
                Y[r] = M[i][j][k]
                r+=1
                X[r][to_in(i,j)]=-1.
                X[r][to_in(i,k)]=1.
                Y[r] = M[i][k][j]
                r+=1
    
    (w,ux,uy)=isotron.isotron(X,Y,30)
    haty = [isotron.lin_xyz(ux,uy,dot(w,x)) for x in X]
    
    print "Our squared error:",sum([(haty[i]-Y[i])**2 for i in range(m)])/(1.*m)
    print "0's squared error:",sum([(Y[i])**2 for i in range(m)])/(1.*m)
    
    S = zeros((n,n))
    a = max(w)
    b = min(w)
    
    for i in range(n):
        for j in range(n):
            S[i][j]=(w[to_in(i,j)]-b)/(a-b)
    
    sr = []
    for i in range(n):
        for j in range(i):
            sr.append((S[i][j],chr(97+i)+chr(97+j)))
    sr.sort()
    res = ""
    for (x,ab) in sr:
        res += " "+ab
    print res
    return S
Beispiel #2
0
def compute_S(M):
    n = 26

    m = 2 * (26 * 26 * 27) / 2
    X = zeros((m, (n * (n + 1)) / 2))
    Y = zeros(m)

    r = 0
    for i in range(n):
        for j in range(n):
            for k in range(j + 1):
                X[r][to_in(i, j)] = 1.
                X[r][to_in(i, k)] = -1.
                Y[r] = M[i][j][k]
                r += 1
                X[r][to_in(i, j)] = -1.
                X[r][to_in(i, k)] = 1.
                Y[r] = M[i][k][j]
                r += 1

    (w, ux, uy) = isotron.isotron(X, Y, 30)
    haty = [isotron.lin_xyz(ux, uy, dot(w, x)) for x in X]

    print "Our squared error:", sum([(haty[i] - Y[i])**2
                                     for i in range(m)]) / (1. * m)
    print "0's squared error:", sum([(Y[i])**2 for i in range(m)]) / (1. * m)

    S = zeros((n, n))
    a = max(w)
    b = min(w)

    for i in range(n):
        for j in range(n):
            S[i][j] = (w[to_in(i, j)] - b) / (a - b)

    sr = []
    for i in range(n):
        for j in range(i):
            sr.append((S[i][j], chr(97 + i) + chr(97 + j)))
    sr.sort()
    res = ""
    for (x, ab) in sr:
        res += " " + ab
    print res
    return S
Beispiel #3
0
def estimate(X, Y, X_CV, X_test, estimator, param, **kwargs):
    """ Handler method to distribute estimate to correct estimation method. """
    sys.path.insert(0, __path_to_source__)
    sys.path.insert(0, __path_to_elm__)
    assert 'estimator_id' in estimator, "estimate_handler: 'estimator_id' not in estimator"
    if estimator['estimator_id'] == 'knn':
        return knn(X, Y, X_CV, X_test, estimator, param, **kwargs)
    elif estimator['estimator_id'] == 'linreg':
        return linreg(X, Y, X_CV, X_test, estimator, param, **kwargs)
    elif estimator['estimator_id'] == 'sirknn':
        return sirknn(X, Y, X_CV, X_test, estimator, param, __path_to_source__,
                      **kwargs)
    elif estimator['estimator_id'] == 'ffnn':
        return ffnn(X, Y, X_CV, X_test, estimator, param, __path_to_source__,
                    **kwargs)
    elif estimator['estimator_id'] == 'isotron':
        return isotron(X, Y, X_CV, X_test, estimator, param,
                       __path_to_source__, **kwargs)
    elif estimator['estimator_id'] == 'elm':
        return elm_regressor(X, Y, X_CV, X_test, estimator, param,
                             __path_to_elm__, **kwargs)
    else:
        raise NotImplementedError("Estimator {0} is not implemented".format(
            estimator.get('estimator_id', 'NONE')))
Beispiel #4
0
def compute_S(M):
    n = 26

    m = 2 * (26 * 26 * 27) / 2
    X = zeros((m, (n * (n + 1)) / 2))
    Y = zeros(m)

    r = 0
    for i in range(n):
        for j in range(n):
            for k in range(j + 1):
                X[r][to_in(i, j)] = 1.
                X[r][to_in(i, k)] = -1.
                Y[r] = M[i][j][k]
                r += 1
                X[r][to_in(i, j)] = -1.
                X[r][to_in(i, k)] = 1.
                Y[r] = M[i][k][j]
                r += 1

    (w, ux, uy) = isotron.isotron(X, Y, 30)
    haty = [isotron.lin_xyz(ux, uy, dot(w, x)) for x in X]

    print "Our squared error:", sum([(haty[i] - Y[i])**2
                                     for i in range(m)]) / (1. * m)
    print "0's squared error:", sum([(Y[i])**2 for i in range(m)]) / (1. * m)

    S = zeros((n, n))
    a = max(w)
    b = min(w)

    for i in range(n):
        for j in range(n):
            S[i][j] = (w[to_in(i, j)] - b) / (a - b)

    mms = "GraphPlot[{"

    sr = []
    for i in range(n):
        for j in range(i):
            sr.append((S[i][j], chr(97 + i) + chr(97 + j)))
            if S[i][j] > 0.3:
                mms += chr(97 + i) + "->" + chr(97 + j) + ","
    sr.sort()
    res = ""
    for (x, ab) in sr:
        res += " " + ab
    print res

    mms = mms[:-1]
    mms += "},VertexLabeling->True]"
    #print mms

    for i in range(n):
        res = chr(97 + i) + " "
        sr = []
        for j in range(n):
            sr.append((S[i][j], chr(97 + j)))
        sr.sort(reverse=True)
        for (x, b) in sr:
            res += " " + b
        print res


#    plt.plot(ux,uy)
#    plt.plot(ux,[2/(1+exp(-.04*x))-1 for x in ux],'r')
#    plt.show()
    return S
Beispiel #5
0
def compute_S(M):
    n = 26
    
    m = 2*(26*26*27)/2
    X = zeros((m,(n*(n+1))/2))
    Y = zeros(m)
    
    
    r = 0
    for i in range(n):
        for j in range(n):
            for k in range(j+1):
                X[r][to_in(i,j)]=1.
                X[r][to_in(i,k)]=-1.
                Y[r] = M[i][j][k]
                r+=1
                X[r][to_in(i,j)]=-1.
                X[r][to_in(i,k)]=1.
                Y[r] = M[i][k][j]
                r+=1
    
    (w,ux,uy)=isotron.isotron(X,Y,30)
    haty = [isotron.lin_xyz(ux,uy,dot(w,x)) for x in X]
    
    print "Our squared error:",sum([(haty[i]-Y[i])**2 for i in range(m)])/(1.*m)
    print "0's squared error:",sum([(Y[i])**2 for i in range(m)])/(1.*m)
    
    S = zeros((n,n))
    a = max(w)
    b = min(w)
    
    for i in range(n):
        for j in range(n):
            S[i][j]=(w[to_in(i,j)]-b)/(a-b)
    
    mms = "GraphPlot[{"
    
    sr = []
    for i in range(n):
        for j in range(i):
            sr.append((S[i][j],chr(97+i)+chr(97+j)))
            if S[i][j]>0.3:
                mms+=chr(97+i)+"->"+chr(97+j)+","
    sr.sort()
    res = ""
    for (x,ab) in sr:
        res += " "+ab
    print res
    
    mms=mms[:-1]
    mms+="},VertexLabeling->True]"
    #print mms

    for i in range(n):
        res = chr(97+i)+" "
        sr = []
        for j in range(n):
            sr.append((S[i][j],chr(97+j)))
        sr.sort(reverse=True)
        for (x,b) in sr:
            res += " "+b
        print res
    

#    plt.plot(ux,uy)
#    plt.plot(ux,[2/(1+exp(-.04*x))-1 for x in ux],'r')
#    plt.show()
    return S