????????我前面說過,提高記憶的最好方法最好就是做個(gè)小測(cè)驗(yàn)、作業(yè)、實(shí)戰(zhàn)、review or something。只要你做過以上這些動(dòng)作,大腦又會(huì)有新一輪的總結(jié)。
????????machine-learning-ex1是我的第一次提交程序小作業(yè)。由于對(duì)每一個(gè)問題都深而細(xì)地研究,所以做的時(shí)間比較長。打開ex1.m我們可以發(fā)現(xiàn)各個(gè)步驟的作業(yè)都封裝在主程序ex1.m里面,目的是讓大家深入淺出循序漸進(jìn)地理解每一個(gè)步驟每一個(gè)公式的含義(吳教授的用心良苦?。?。
作業(yè)的第一部分warmUpExercies.m大概就是熱個(gè)身,這個(gè)沒什么好說的了。
作業(yè)的第二部分是畫圖,完善plotData,這個(gè)plotData的Hint其實(shí)給了很大的提示,而且也是課程視頻里面講過實(shí)現(xiàn)方法,也沒什么好說的了。xlabel和ylabel是對(duì)應(yīng)的x軸y軸顯示文字標(biāo)簽。
plot(x, y, 'rx', 'MarkerSize', 10);
xlabel('Population of City in 10,000s');
ylabel('Profit in $10,000s');
第三部分:computeCost。
Hyposthesis = X * theta;
Temp = (Hyposthesis - y).^2;
J = sum(Temp) / (2*m);
用一句話就是
J = sum((X * theta - y).^2) / (2*m)
最后算出來的答案是:54.24
剛開始我用的是for循環(huán)慢慢理解,對(duì)于新人來說,一開始就要從最基本的for循環(huán)求和開始理解,才慢慢地,用一步解決。一步到位雖然簡單明了,但是很多新人沒搞懂。彎路是最好的捷徑。
????????接著就是gradientDescent求theta最優(yōu)解。這部分的詳細(xì)分解我已經(jīng)在文章說過,也不細(xì)細(xì)說。最先要從for循環(huán)開始,一層一層嵌套,就像剝洋蔥一樣,到最后理解會(huì)非常清晰。答案是-3.6303 1.1664。
最后一部分就是畫圖,讓你可以清晰看見J和梯度算法的可視化