0
制約付き損失最小化を使用してnumpyとscipyで回帰を実行しました。ここでの例は次のとおりnumpyを使用した制約で、損失最小化からr_squaredを取得するにはどうすればよいですか?
y_values我々は、係数のいくつかは、いくつかの入力重みを乗じたように、制約と、Y = Xcのを解決するX行列は
ある
x_matrix_trans値numObservations有するベクトルであります私の回帰がres.xで正しい値を生成するが、私はまたr_squaredとr_squared調整を計算するために必要な。
def constraint1(x):
res = 0
for i in range (0, NUM_WEIGHTS):
res = res + x[CONST_VAL + i] * weights[CONST_VAL + i]
return res
def loss(x):
return np.sum(np.square((np.dot(x, x_matrix_trans) - y_values)))
cons = ({'type': 'eq',
'fun' : constraint1})
x0 = np.zeros(x_matrix_trans.shape[0])
res = minimize(loss, x0, method='SLSQP',constraints=cons, options={'disp': True, 'maxiter' : 1000, 'ftol' : 1e-07})
print(res.x)
0に合計しなければなりません私はr_squaredを計算しようとしましたが、それらは間違っていました。ここで
は私がr_squaredを計算しようとした方法です:
adjRsq = 0.0
if ((num_coefficients - num_observations - 1) != 0):
adjRsq = rsq - (1-rsq)*(num_coefficients - 1)/(num_observations -num_coefficients - 1)
ありがとう:ここ
ymeas = y_values
yfit = np.dot(res.x, x_matrix_trans)
ss_res = np.sum((ymeas - yfit) ** 2)
ss_tot = np.var(ymeas) * len(ymeas)
rsq = 1 - ss_res/ss_tot
は私が調整さr_squaredを計算しようとした方法です。
はたぶん、あなたはあなたの結果が正しくない感じるものの中に言うことができなければなりません調整r_squareの例外を除いて。 –