線性回歸(Matlab)

2021-07-26 00:06:09 字數 1771 閱讀 3321

單變數線性回歸

假設方程:(構造矩陣x時,使x(:,1)=1)

代價函式:(y是訓練集中實際值,hθ(x)是**值)

利用gradient descent(梯度下降),一步步迭代求出使代價函式最小的θ,**注意:對於單變數,θ是二維的

data = load('ex1data1.txt');

x = data(:, 1);

y = data(:, 2);

m = length(y); % number of training examples

plotdata(x, y);

x = [ones(m, 1), data(:,1)]; % add a column of ones to x

theta = zeros(2, 1); % initialize fitting parameters

% some gradient descent settings

iterations = 1500;

alpha = 0.01;

%compute theta

for iter = 1:iterations

temp1=theta(1)-alpha/m*sum((x*theta-y).*x(:,1));

temp2=theta(2)-alpha/m*sum((x*theta-y).*x(:,2));

theta(1)=temp1;

theta(2)=temp2;

endhold on; % keep previous plot visible

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

legend('training data', 'linear regression')

hold off % don't overlay any more plots on this figure

執行結果:

ex1data1.txt部分資料:

多變數線性回歸

多變數線性回歸與單變數大同小異,只是θ維度變為n*1,在用gradient descent方法計算時,用乙個迴圈計算即可。

temp=zeros(size(theta,1),1);

for i=1:size(theta,1),

temp(i)=theta(i)-alpha/m*sum((x*theta-y).*x(:,i));

end;

for i=1:size(theta,1),

theta(i)=temp(i);

end;

在迭代中可以計算出每一次迭代損失函式的值(即每個theta對應的j的值)然後畫出來。

j=(x*theta-y)'*(x*theta-y)/2/m;

隨著迭代次數增加,j逐漸減小,alpha值增大,j減小速度越快,但是,當alpha很大時j不會一直減小會出現波動。

MATLAB 線性回歸

一 一元線性回歸 1 1 命令 polyfit最小二乘多項式擬合 p,s polyfit x,y,m 多項式y a1xm a2xm 1 amx am 1 其中x x1,x2,xm x1 xm為 n 1 的矩陣 y為 n 1 的矩陣 p a1,a2,am 1 是多項式y a1xm a2xm 1 amx...

matlab線性回歸程式

最近用matlab做線性回歸,用到命令regress,可是發現他沒辦法做回歸係數的t檢驗,因此,自己就寫了乙個。參考書籍 計量經濟學 龐皓 科學出版社 function b,beta,t,t0,sigma,rss,tss,r,r1,f,f0 pureregress x,y,con x是因子,n p,...

MATLAB實現多元線性回歸

function b,bint,r,rint,stats multiple linear regression x,y,alpha multiple linear regression 多元線性回歸 對於輸入資料 必須是去除量綱之後的資料 進行多元線性回歸處理 輸入變數 x 由自變數組成的矩陣 第一...