import numpy as np
def createdata():
x1 = np.linspace(0,9,50)
x2 = np.linspace(10,19,50)
x3 = np.linspace(20,9,50)
x = np.concatenate(([x1],[x2],[x3])).t
y = np.dot(x,np.array([1,2,3]).t)
return x,y
def bgd(x,y,learningrate,max_iter):
x_row_num,dim = x.shape
loss = 1
iter_count = 0
w = np.random.rand(dim)
while loss>0.001 and iter_countloss = 0
error = np.zeros(dim)
for i in range(x_row_num):
predict_y = np.dot(w,x[i])
for j in range(dim):
error[j] += (y[i]-predict_y)*x[i][j]#把每一行的誤差都累加起來
#求完誤差之後更新權重
for i in range(dim):
w[i] += learningrate*error[i]/x_row_num#每一行的都加起來
for i in range(x_row_num):
predict_y = np.dot(w,x[i])
loss += np.square(predict_y-y[i])/(x_row_num*dim)
print('迭代次數:',iter_count,'損失:',loss)
iter_count += 1
return w
if __name__ == '__main__':
x, y = createdata()#構造訓練資料
w = bgd(x, y,0.001,10000)#把構造的資料進行梯度下降
print(w) # 會很接近[1, 2,3]
線性回歸 梯度下降
線性回歸演算法屬於監督學習的一種,主要用於模型為連續函式的數值 過程總得來說就是初步建模後,通過訓練集合確定模型引數,得到最終 函式,此時輸入自變數即可得到 值。1 初步建模。確定假設函式 h x 最終 用 2 建立價值函式 j 也叫目標函式 損失函式等,求引數 用 3 求引數 對價值函式求偏導 即...
線性回歸梯度下降
梯度下降 一種最優化演算法,就是沿著函式的梯度方向尋找函式的最小值 線性回歸模型 最終的目標就是利用 梯度下降法 求出使 誤差函式 最小的線性函式的系數值 梯度下降演算法有兩種 1.批量梯度下降 batch gradient descent 2.隨機梯度下降 stochastic gradient ...
線性回歸 梯度下降
利用回歸方程對乙個或多個自變數和因變數之間進行建模的分析方式損失 計算損失用最小二乘法。優化。優化有兩種方式。一種是正規方程解法通常只適用於極少量資料,一般不會用 二是梯度下降的方式通常使用梯度下降 梯度下降的簡介。梯度就是倒導數 切線。沿著切線的方向下降的最快。梯度下降有兩個引數,起始點和學習率 ...