Changeset 3710:19f8489a487d in orange


Ignore:
Timestamp:
05/28/07 14:39:45 (7 years ago)
Author:
blaz <blaz.zupan@…>
Branch:
default
Convert:
88570b24eb7993d46eb7a0875c05189c038f92b4
Message:

some minor changes in LR in PLS (initialization, returning the results)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/orngRegression.py

    r3707 r3710  
    1010 
    1111class LinearRegressionLearner(object): 
    12     def __new__(self, data=None, name='linear regression', **kwds): 
     12    """LinearRegressionLearner(data, beta0=True)""" 
     13    def __new__(self, data=None, name='linear regression', beta0=True, **kwds): 
    1314        learner = object.__new__(self, **kwds) 
    1415        if data: 
    15             learner.__init__(name) # force init 
     16            learner.__init__(name=name, beta0=beta0, **kwds) # force init 
    1617            return learner(data) 
    1718        else: 
    1819            return learner  # invokes the __init__ 
    1920 
    20     def __init__(self, name='linear regression', beta0 = True): 
     21    def __init__(self, name='linear regression', beta0=True, **kwds): 
     22        self.__dict__ = kwds 
    2123        self.name = name 
    2224        self.beta0 = beta0 
     
    9799        else: 
    98100            yhat = dot(self.beta, ex[:-1]) 
     101        yhat = orange.Value(yhat) 
    99102        dist = 0                    # this should be distribution 
    100103          
    101104        if result_type == orange.GetValue: 
    102         return yhat 
     105            return yhat 
    103106        if result_type == orange.GetProbabilities: 
    104107            return dist 
    105         return (v, dist) # for orange.GetBoth 
     108        return (yhat, dist) # for orange.GetBoth 
    106109 
    107110def printLinearRegression(lr): 
     
    145148        if data: 
    146149            learner.__init__(name) # force init 
    147             if x == None: 
    148                 x = [v for v in data.domain.variables if v not in y] 
    149             if nc == None: 
    150                 nc = len(x) 
    151             return learner(data,y,x,nc) 
     150            return learner(data, y=y, x=x, nc=nc) 
    152151        else: 
    153152            return learner  # invokes the __init__ 
     
    157156        self.nc = nc 
    158157 
    159     def __call__(self, data, y, x=None, nc=None, weight=None): 
     158    def __call__(self, data, y=None, x=None, nc=None, weight=None): 
     159        if y == None: 
     160            try: 
     161                y = [data.domain.classVar] 
     162            except: 
     163                import warnings 
     164                warnings.warn("PLS requires either specification of response variables or a data domain with a class") 
     165                return None 
    160166        if x == None: 
     167            print y 
    161168            x = [v for v in data.domain.variables if v not in y] 
     169        if nc == None: 
     170            nc = len(x) 
    162171 
    163172        dataX = data.select(x) 
     
    229238        self.__dict__ = kwds 
    230239 
    231     def __call__(self, example): 
    232        ex = orange.Example(self.domain, example) 
    233        ex = numpy.array(ex.native()) 
    234        ex = (ex - self.XMean) / self.XStd 
    235        yhat = dot(ex, self.BPls) * self.YStd + self.YMean         
    236        return yhat 
     240    def __call__(self, example, result_type=orange.GetValue): 
     241        ex = orange.Example(self.domain, example) 
     242        ex = numpy.array(ex.native()) 
     243        ex = (ex - self.XMean) / self.XStd 
     244        yhat = orange.Value(dot(ex, self.BPls) * self.YStd + self.YMean) 
     245        dist = 0 
     246         
     247        if result_type == orange.GetValue: 
     248            return yhat 
     249        if result_type == orange.GetProbabilities: 
     250            return dist 
     251        return (yhat, dist) # for orange.GetBoth 
Note: See TracChangeset for help on using the changeset viewer.