2016-12-26 10 views
1

クラス内の関数によって返された変数を、そのクラス内の別の関数に渡すにはどうすればよいですか?例えば
(線形回帰を実行する):クラス内の関数間で変数を渡す

class ForwardPropagation(object): 
    def __init__(self, xs, realoutput): 
     self.xs = np.asarray(xs) 
     self.realoutput = np.asarray(realoutput) 
     self.guess_slope = random.randint(1,10) 
     self.guess_b = random.randint(1,10) 
     self.guess_output = (self.guess_slope * self.xs) + self.guess_b 

    def distance(self):#returns np.array with distance results 
     abs_D = self.realoutput - self.guess_output 
     D_sqr = abs_D ** 2 
     return abs_D, D_sqr 

    def error(self): 
     sigma = np.sum(D_sqr) 
     mean_error = sigma/len(D_sqr) 
     return mean_error 

にはどうすれば誤差関数に、私の距離関数の二乗である変数D_sqrを渡すことができますか?

+2

距離関数にエラーがあります.D_sqrが返されることはありません。最初のreturn文で折り返されます。 D_sqrとabs_Dの両方を返す場合は、次のようにタプルとして返すことができます。 'return abs_D、D_sqr' – nrlakin

+0

距離関数では2つのリターンを持つことはできません。 – Octo

答えて

3

あなたは

def distance(self):#returns np.array with distance results 
    abs_D = self.realoutput - self.guess_output 
    D_sqr = abs_D ** 2 
    return abs_D, D_sqr 

def error(self): 
    abs_D, D_sqr = self.distance() 
    sigma = np.sum(D_sqr) 
    mean_error = sigma/len(D_sqr) 
    return mean_error 

それとも、可能性のある他の関数を呼び出すことができるときあなたは何を渡す必要はありません再計算する

def error(self): 
    abs_D = self.realoutput - self.guess_output 
    D_sqr = abs_D ** 2 
    sigma = np.sum(D_sqr) 
    mean_error = sigma/len(D_sqr) 
    return mean_error 
0

使用クラス変数

self.D_sqr = D_sqr 

とエラーで:

sigma = np.sum(self.D_sqr) 
関連する問題