2017-01-12 11 views
0

私はtheta関数を計算するための普遍的な方程式の作成に取り組んできました。私が持っている現在の方程式は普遍的ではありません。これは最大2テタまで有効です。私がthetaの計算を2以上にしなければならない場合は、括弧内の数字を手動で変更する必要があります。theta()普遍的なコードを作成する

ユニバーサル機能を設定する方法はありますか? thata(j) = equationのようなものです。私は以下の2つのコードを貼り付けました。一つは動作していますが普遍的ではなく、もう一つは演奏しようとしたが、まだエラーで終わったものです。

コード1:

for iter = 1:num_iters 


    theta(1) = theta(1) - (alpha/m)*((X*theta-y)')*X(:,1), 
    theta(2) = theta(2) - (alpha/m)*((X*theta-y)')*X(:,2); 
    theta_hist(iter,1) = theta(1); 
    theta_hist(iter,2) = theta(2); 

end 

コード2:

num_cols = size(X,2) 
for inter = 1:num_iters 
    for j = 1:num_cols 
     theta(j) = theta(j) - (alpha/m)*((X*theta-y)')*X(:,j), 
    end, 
end, 

このコードの課題は、そのコードがループ二回通過する場合(i = 1、j = 2) 。関数は、thetaの新しい値を使用しています。これは計算を台無しにしています。

ご意見やご提案をいただければ幸いです。この問題の

詳しい説明は以下のリンクに記載されている: https://docs.google.com/document/d/1XwAVV1OBN9BhQ7n60F2oEUoT263t_2hcAAuCaroR-2g/edit?usp=sharing

+0

これはRコードではありません。正しい言語タグを追加してください。 – Roland

+0

申し訳ありませんが、私はRとOctaveで作業していました。そして混乱した。修正をありがとう。 – blackknight316

+0

すべての入力変数の次元は何ですか(一般的な場合)? –

答えて

0

あなたはあなたのコードをベクトル化すべきです。あなたは、マトリックスdimenstionsおよび/またはサンプルの入力を提供していないが、私はそれを正しく推測している場合、以下はあなたが必要なものを与える必要があります。

% Some random inputs 
alpha = 1; 
m = 1; 
num_iters = 15; 
N = 5; k = 12; 
X = randn(k,N); 
y = randn(k,1); 

theta = zeros(N,1); 
theta_hist = zeros(N,num_iters); 
for i = 1:num_iters 
    theta = theta - (alpha/m)*X'*(X*theta-y); 
    theta_hist(:,i) = theta; 
end 
+0

私は同様のことを試みました。ここに私が持っている挑戦があります。 – blackknight316

+0

申し訳ありません、何ですか?どんな挑戦ですか? –

+0

私が話すように私は挑戦をタイプしています。申し訳ありませんが、上記は間違いでした。 – blackknight316

関連する問題