根據《機器學習實戰》中的phthon**改編而來,詳細說明參見原書,測試資料都是用的原書資料
主程式:lwlr_test.m
clc;
clear;
%高斯核波長
k=0.01;
%讀取資料,
fid=fopen('ex0.txt','r');
dataset=zeros(1,3);
m=size(dataset,1);
while(~feof(fid))
lineinfo=fgetl(fid);
%將字元轉換為數字組成的陣列
c=str2num(lineinfo);
dataset(m,:)=c;
m=m+1;
endy_p=zeros(1,m);
x=dataset(:,1:2);
y=dataset(:,3);
x_test=x;
m=size(x_test,1);
d=ones(m,1)/m;
for i=1:m
y_p(i)=lwlr(x_test(i,:),x,y,k);
endy_p(length(y_p))=;
xx=cat(2,x_test(:,2),y);
xx=sortrows(xx);
xxp=cat(2,x_test(:,2),y_p');
xxp=sortrows(xxp);
scatter(xx(:,1),xx(:,2),'.');
%plot(xx(:,1),xx(:,2));
hold on
plot(xxp(:,1),xxp(:,2),'r')
函式檔案:lwlr.m
function result=lwlr(point,x,y,k)
%y轉置
yt=y';
%獲得x的行
m=size(x,1);
weights=eye(m);
for i=1:m
diff=point-x(i,:);
weights(i,i)=exp(diff*diff'/(-2.0*k^2));
endxx=x'*(weights*x);
if det(xx)==0
display ('this matrix is singular, cannot do inverse');
return;
endws=xx^-1*(x'*(weights*y));
result=point*ws;
end
區域性加權線性回歸(LWLR)
對於線性回歸演算法,容易出現欠擬合,而多項式回歸又容易出現過擬合。因此出現了區域性加權回歸y i t x i 和線性回歸的模型相同,但是對於每乙個 點,都需要重新計算,並不是固定不變的。l 1 2m i 1mw i yi tx i 2 wi e xp xi x 22 k2 對於 點x,wi 表示xi...
區域性加權線性回歸
簡單來說,這個過程其實是在先擬合出一條曲線,然後再用這個曲線去 需要 的點。但是如果這個曲線擬合得不好 或者說樣本資料含有大量噪音 那麼這個 結果就會很差。區域性加權線性回歸 對於乙個資料集合 x0,y0 x1,y1 xm,ym 我們 它在x點時對應的y值時,如果採用的是傳統的 線性回歸模型,那麼 ...
區域性加權線性回歸
區域性加權線性回歸是機器學習裡的一種經典的方法,彌補了普通線性回歸模型欠擬合或者過擬合的問題。機器學習裡分為無監督學習和有監督學習,線性回歸裡是屬於有監督的學習。普通的線性回歸屬於引數學習演算法 parametric learning algorithm 而區域性加權線性回歸屬於非引數學習演算法 n...