2016-09-29 11 views
1

私はコーセラにmachine learning courseを以下のよ、と講義の一つは、一つの変数の線形回帰のためのコスト関数の等高線図を提供します。線形回帰コスト関数の等高線グラフをプロットする方法は?

enter image description here

出典:https://www.coursera.org/learn/machine-learning/lecture/nwpe2/cost-function-intuition-ii

私はそれと思いましたこのチャートを再現できるようにするためには、教育的観点から有用であろう。私はオクターブの経験がないので、オクターブコマンドウィンドウに貼り付けることができるステップごとの手順が必要です。

誰でもこれを手伝うことができますか?


アップデート:私は次のようになってしまった

function cost = calc_cost (theta0, theta1) 
    x = 1:10; 
    y = x.*2; 
    cost = arrayfun(@(t0, t1) (1/(length(x)) * sum(((t0 + t1*x) - y).^2)), theta0, theta1); 
endfunction 

[xx, yy] = meshgrid(-3000:50:3000, -3000:50:3000) ; 
zz = calc_cost(xx, yy); 
contour(xx, yy, zz) 
+0

'demo ezcontour'を見てください。あなたはtheta0とtheta1の行列入力を受け入れるようにコスト関数を書き直すべきです – Andy

+0

ありがとうAndy。私は自分の関数内でarrayfunを使って別の解決策を思いついた。それは私の機能がマトリックスを受け入れることによってあなたが意味するものですか? –

答えて

1

あなたがarrayfun使用することができ、それがマトリックス入力を受け入れるように、あなたの費用funktionを書き換えることが全くできない場合:

function cost = calc_cost (theta0, theta1) 
    x = 1:10; 
    y = x.*2; 
    cost = (1/(length(x)) * sum(((theta0 + theta1*x) - y).^2)); 
endfunction 

[x,y] = meshgrid (linspace(-5000,5000,20), linspace(-500,500,20)); 
z = arrayfun (@calc_cost, x, y); 
contour (x, y, z) 
print out.png 

は、 print

関連する問題