Changeset 10194:1d3b705df05a in orange


Ignore:
Timestamp:
02/13/12 15:35:21 (2 years ago)
Author:
anzeh <anze.staric@…>
Branch:
default
Message:

Replaced from numpy import * with import numpy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/projection/mds.py

    r9994 r10194  
    9696""" 
    9797 
    98  
    99 from math import * 
    100 from numpy import * 
     98import numpy 
    10199from numpy.linalg import svd 
    102100 
     
    124122class PivotMDS(object): 
    125123    def __init__(self, distances=None, pivots=50, dim=2, **kwargs): 
    126         self.dst = array([m for m in distances]) 
     124        self.dst = numpy.array([m for m in distances]) 
    127125        self.n = len(self.dst) 
    128126 
    129127        if type(pivots) == type(1): 
    130128            self.k = pivots 
    131             self.pivots = random.permutation(len(self.dst))[:pivots] 
     129            self.pivots = numpy.random.permutation(len(self.dst))[:pivots] 
    132130            #self.pivots.sort() 
    133131        elif type(pivots) == type([]): 
     
    153151        C = d**2 
    154152        # double-center d 
    155         cavg = sum(d, axis=0)/(self.k+0.0)      # column sum 
    156         ravg = sum(d, axis=1)/(self.n+0.0)    # row sum 
    157         tavg = sum(cavg)/(self.n+0.0)   # total sum 
     153        cavg = numpy.sum(d, axis=0)/(self.k+0.0)      # column sum 
     154        ravg = numpy.sum(d, axis=1)/(self.n+0.0)    # row sum 
     155        tavg = numpy.sum(cavg)/(self.n+0.0)   # total sum 
    158156        # TODO: optimize 
    159157        for i in xrange(self.n): 
     
    162160         
    163161        C = -0.5 * (C + tavg) 
    164         w,v = linalg.eig(dot(C.T, C)) 
     162        w,v = numpy.linalg.eig(numpy.dot(C.T, C)) 
    165163        tmp = zip([float(val) for val in w], range(self.n)) 
    166164        tmp.sort() 
    167165        w1, w2 = tmp[-1][0], tmp[-2][0] 
    168166        v1, v2 = v[:, tmp[-1][1]], v[:, tmp[-2][1]] 
    169         x = dot(C, v1) 
    170         y = dot(C, v2) 
     167        x = numpy.dot(C, v1) 
     168        y = numpy.dot(C, v2) 
    171169        return x, y 
    172170         
     
    316314        """ 
    317315        # Torgerson's initial approximation 
    318         O = array([m for m in self.distances]) 
     316        O = numpy.array([m for m in self.distances]) 
    319317         
    320318##        #B = matrixmultiply(O,O) 
     
    332330 
    333331        # B = double-center O**2 !!! 
    334         J = identity(self.n) - (1/float(self.n)) 
    335         B = -0.5 * dot(dot(J, O**2), J) 
     332        J = numpy.identity(self.n) - (1/numpy.float(self.n)) 
     333        B = -0.5 * numpy.dot(numpy.dot(J, O**2), J) 
    336334         
    337335        # SVD-solve B = ULU' 
     
    341339        # # self.X = matrixmultiply(U,identity(self.n)*sqrt(L)) 
    342340        # X is n-dimensional, we take the two dimensions with the largest singular values 
    343         idx = argsort(L)[-self.dim:].tolist() 
     341        idx = numpy.argsort(L)[-self.dim:].tolist() 
    344342        idx.reverse() 
    345343         
    346         Lt = take(L,idx)   # take those singular values 
    347         Ut = take(U,idx,axis=1) # take those columns that are enabled 
    348         Dt = identity(self.dim)*sqrt(Lt)  # make a diagonal matrix, with squarooted values 
    349         self.points = Orange.core.FloatListList(dot(Ut,Dt)) 
     344        Lt = numpy.take(L,idx)   # take those singular values 
     345        Ut = numpy.take(U,idx,axis=1) # take those columns that are enabled 
     346        Dt = numpy.identity(self.dim)*numpy.sqrt(Lt)  # make a diagonal matrix, with squarooted values 
     347        self.points = Orange.core.FloatListList(numpy.dot(Ut,Dt)) 
    350348        self.freshD = 0 
    351349         
     
    417415        for i in d: 
    418416            sum += i[2]*i[2]*i[1] 
    419         f = sqrt(distnorm/max(sum,1e-6)) 
     417        f = numpy.sqrt(distnorm/numpy.max(sum,1e-6)) 
    420418        # transform O 
    421419        k = 0 
Note: See TracChangeset for help on using the changeset viewer.