模式識別與機器學習(2)

2021-07-22 02:24:38 字數 2799 閱讀 6739

參考部落格:  

% %%隨機梯度下降

% clear all;

% x=load('./ex2data/ex2x.dat');

% y=load('./ex2data/ex2y.dat');

% %x=[1.15 1.9 3.06 4.66 6.84 7.95 10,14,16]';

% %x=power(x,0.5);

% %y=power(x,0.5)';

% m=length(y);

% figure;

% %tt=power(x(:,1),2);

% plot(x,y,'o');

% ylabel('height in meters');

% xlabel('age in years');

% %%gradient descent 這是批量梯度

% g=inline('1.0./(1.0+exp(-z))');

% x=[ones(m,1) power(x,1) ];%這是自變數

% theta=zeros(size(x(1,:)))'; %初始化,這裡有兩個係數,其實變數代表的是a

% max_itr=1;%迭代次數

% alpha=0.002; %學習率 %之前這裡為0.07,所以跑出去了。

% for num_iterations=1:max_itr

% for i=1:m

% t=(g(x(i,:)*theta)-y(i));

% for j=1:size(x,2)

% grad=x(i,j)*t;

% theta(j,1)=theta(j,1)-alpha*grad; %隨機梯度下降

% end

%

%

% end

% end

% hold on;

% %ttt=power(x(:,2),2);

% plot(x(:,2),power(x,1)*theta,'-');

% legend('training data', 'linear regression');%標出影象中各曲線標誌所代表的意義

% hold off ;

%%批量梯度下降

clear all;

x=load('./ex2data/ex2x.dat');

y=load('./ex2data/ex2y.dat');

% x=[1.15 1.9 3.06 4.66 6.84 7.95 10,14,16]';

% x=power(x,0.5);

% y=power(x,0.5);

%tt=power(x(:,1),2);

m=length(y); %原來是我的 散點畫錯了

figure;

plot(x,y,'o');

ylabel('height in meters');

xlabel('age in years');

%%gradient descent 這是批量梯度

n=1;

x=[ones(m,1) x];%這是自變數

theta=zeros(size(x(1,:)))'; %初始化,這裡有兩個係數,其實變數代表的是a

max_itr=150000;%迭代次數

alpha=0.07; %學習率

for num_iterations=1:max_itr %懂了上標是什麼意思的,原來是指維度,即對於乙個變數來說指取了

grad=(1/m)*x'*((x*theta)-y);%第幾個例項,一般來說,一張影象是乙個變數,影象的維度表示資料

for ii=1:(n+1)

for jj=1:(n+1)

h1(ii,jj) = sum( x(:, ii).*x(:,jj), 1)/m;%多個負號,按理是要負號的啊

endend %這個挺好,這樣對應公式還是挺快的 。

%theta=theta-inv(h1)*grad; %這是用牛頓法

theta=theta-alpha *grad; %換句話說,譬如這裡的年齡是個變數,取了幾個值,代表著維度。

%矩陣相乘就是求和了

end

hold on;

%tt=power(x(:,2),2);

plot(x(:,2),x*theta,'-');

legend('training data', 'linear regression');%標出影象中各曲線標誌所代表的意義

hold off ;

% %%採用normal equations方法求解:

% x=load('./ex2data/ex2x.dat');

% y=load('./ex2data/ex2y.dat');

% plot(x,y,'*');

% xlabel('height');

% ylabel('age');

% %x = [ones(50,1),x];

% x = [ones(size(x,1),1),x]; %是指有個x^0 所以係數有兩個

% w=inv(x'*x)*x'*y;

% hold on

% plot(x(:,2),x*w); %即 plot(x(:,2),0.0639*x(:,2)+0.7502)%更正後的**

模式識別與機器學習(4)

講了推理,以及主要收穫為,原來是對損失函式求導。不過公式不是很對,因為 clear x load ex4data ex4x.dat y load ex4data ex4y.dat m,n size x x ones m,1 x figure pos find y neg find y 0 plot ...

模式識別與機器學習(5)

clear x load ex5data ex5linx.dat y load ex5data ex5liny.dat x load linear regression ex2data ex2x.dat y load linear regression ex2data ex2y.dat plot x...

PRML筆記 模式識別與機器學習

prml筆記 notes on pattern recognition and machine learning.pdf 知乎pattern recognition and machine learning這本書怎麼看?介紹了概率論,區分了經典概率論 frequentist 和 bayesian理論...