單變數線性回歸 梯度下降MATLAB實現

2021-10-11 00:01:34 字數 2491 閱讀 4796

同步更新:

以下是作業1用matlab實現:

匯出資料集,並畫圖顯示。

clear

clcdata =

load

('ex1data1.txt');

%讀取訓練集

x =data(:

,1);

y =data(:

,2);

m =length

(y);

%訓練集數量

figure(1

)plot

(x, y,

'rx'

,'markersize',10

);%畫圖ylabel

('profit in $10,000s');

%設定y軸標籤

xlabel

('population of city in 10,000s');

%設定x軸標籤

梯度下降matlab實現**:

x0 =

[ones

(m,1),

data(:

,1)]

;% add a column of ones to x

theta =

zeros(2

,1);

% initialize fitting parameters

iterations =

2000

;%迭代最大次數

alpha =

0.01

;%學習率 %改變學習率,結果不一樣

s =zeros

(iterations,1)

;%代價函式中的累加值

j =zeros

(iterations,1)

;%代價函式值

for k =1:

1:iterations

p =zeros(2

,1);

%迭代一次,累計清零

for i =1:

1:ms

(k)=

s(k)+(

theta(1

)+theta(2

)*x(i)-y

(i))^2

;%求j函式的累加

%求偏導

p(1)=p(

1)+(

theta(1

)+theta(2

)*x(i)-y

(i))

;%對theta1求偏導的累加

p(2)=p(

2)+(

(theta(1

)+theta(2

)*x(i)-y

(i))*x

(i))

;%對theta2求偏導的累加

end

j(k)=

s(k)/(

2*m)

;%代價函式

theta = theta-

(alpha/m)

*p;if k>

1%為了下面k-

1有索引

ifj(k-1)

-j(k)<

1e-5

%若誤差小於0.00001,則停止迭代

break

; end

endendtheta %輸出顯示theta的值

y =theta(1

)+theta(2

)*x;

%得到擬合直線

plot

(x,y)

%在圖1中畫出擬合結果

grid on

結果:

再顯示代價函式j(θ)的曲線:

figure(2

)%圖2

plot

(j)%畫出代價函式

可以看出大約在800次迭代後,代價函式就趨於平緩。根據設定的0.00001誤差要求,在1735次後停止迭代。

機器學習 單變數線性回歸及梯度下降

注 本系列部落格是博主學習stanford大學 andrew ng 教授的 機器學習 課程筆記。博主深感學過課程後。不進行總結非常easy遺忘,依據課程加上自己對不明確問題的補充遂有此系列部落格。本系列部落格包含線性回歸 邏輯回歸 神經網路 機器學習的應用和系統設計 支援向量機 聚類 將維 異常檢測...

梯度下降法實現softmax回歸MATLAB程式

解決二分類問題時我們通常用logistic回歸,而解決多分類問題時若果用logistic回歸,則需要設計多個分類器,這是相當麻煩的事情。softmax回歸可以看做是logistic回歸的普遍推廣 logistic回歸可看成softmax回歸在類別數為2時的特殊情況 在多分類問題上softmax回歸是...

線性回歸 梯度下降

線性回歸演算法屬於監督學習的一種,主要用於模型為連續函式的數值 過程總得來說就是初步建模後,通過訓練集合確定模型引數,得到最終 函式,此時輸入自變數即可得到 值。1 初步建模。確定假設函式 h x 最終 用 2 建立價值函式 j 也叫目標函式 損失函式等,求引數 用 3 求引數 對價值函式求偏導 即...