2016-09-29 1 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. 나는 내 function 내에서 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

관련 문제