線形回歸和梯度下降的Python例項。

2021-09-12 04:00:19 字數 2869 閱讀 2983

本文只是做為乙個自我梳理

線形回歸的特點

將特徵x 和結果 y 分別放入兩個不同矩陣

多元線形回歸的時候新增乙個x0=

1x_0 = 1

x0​=

1多元線形回歸的時候新增乙個x0=

1x_0 = 1

x0​=

1梯度下降 梯度下降

** h(x

)=θt

xh(x) = \theta^tx

h(x)=θ

tx** h(x

)=θt

xh(x) = \theta^tx

h(x)=θ

tx所以第一步載入矩陣:

資料就搬照鏈結裡面的

data = np.array([[1.1,1.5,2.5],

[1.3,1.9,3.2],

[1.5,2.3,3.9],

[1.7,2.7,4.6],

[1.9,3.1,5.3],

[2.1,3.5,6]])

這裡面x的值就是前兩個,一共有六組訓練。例:y

=2.5

=1.1θ1

+1.5θ2

0y=2.5=1.1θ_1 +1.5\theta_2+\theta_0

y=2.5=

1.1θ

1​+1

.5θ2

​+θ0

def  getdata(data):

m,n = np.shape(data)

traindata = np.ones((m,n))

traindata[:,:-1] = data[:,:-1] #這一步完成將y分離,並且前面新增了乙個x0 = 1;

trainlabel = data[:,-1] #賦予其y值;

return traindata,trainlabel

x[:,]是numpy中陣列的一種寫法,表示對乙個二維陣列,取該二維陣列第一維中的所有資料;第二維中取第0個資料,直觀來說,x[:,0]就是取所有行的第1個資料,

x[:,1] 就是取所有行的第2個資料;

x[:,:2]代表區所有行的前兩個資料;

第三步梯度下降

θ j:

=θj−

α1m∑

i=1m

(h(x

(i))

−y(i

))∗x

(j

)θ_ j:= θ_j - α\frac\sum_^(h(x^) - y^)*x^

θj​:=θ

j​−α

m1​i

=1∑m

​(h(

x(i)

)−y(

i))∗

x(j)

這是梯度下降的公式 ,此間需要用到的引數有,x,y, θ,學習率α ,訓練集數量m,訓練次數maxiteration

這裡我們都需要為這些變數乙個初始值

x,y 就是上面的traindata 和 trainlabel

θ值我們需要初始化,有多少個x值就初始化多少個θ,用矩陣的方式

m 就是m行(m個訓練數量)

最大次數自己定

學習率自己取,不要取大

m, n = np.shape(traindata)

#print(traindata)

theta = np.ones(n)

#print(theta)

alpha = 0.05

maxiteration = 9999

def batchgradientdescent(x, y, theta, alpha, m, maxiterations):

xtrains = x.transpose() #將x轉置

for i in range(0, maxiterations):

hypothesis = np.dot(x, theta) #計算h(x)的值

#print(hypothesis)

loss = hypothesis - y #計算h(x (i) )−y (i))

#print(loss)

gradient = np.dot(xtrains, loss) / m #用x的轉置乘以loss 就是等式最後和x(j)相乘

theta = theta - alpha * gradient #得到θ

return theta

最後一步,**h(x)的值,其實就是h(x

)=θ0

x0+θ

1x1+

θ3x3

+θ4x

4...

....

.+θn

xn

h(x) = θ_0x_0+θ_1x_1+θ_3x_3+θ_4x_4........+θ_nx_n

h(x)=θ

0​x0

​+θ1

​x1​

+θ3​

x3​+

θ4​x

4​..

....

..+θ

n​xn

​θ與x的矩陣相乘

def predict(x, theta):

ypre = np.dot(x, theta)

return ypre

線性回歸 梯度下降

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

回歸 梯度下降法

給定 m條訓練資料,假定方法 先說明向量問題,乙個向量就代表一條特徵值 梯度下降公式 重複公式直到 收斂。公式中意思是 1 第i個 2 重複計算1。直到 repeat util convergence python def gradient x,y,bu,number m,n x.shape wei...

線性回歸梯度下降

梯度下降 一種最優化演算法,就是沿著函式的梯度方向尋找函式的最小值 線性回歸模型 最終的目標就是利用 梯度下降法 求出使 誤差函式 最小的線性函式的系數值 梯度下降演算法有兩種 1.批量梯度下降 batch gradient descent 2.隨機梯度下降 stochastic gradient ...