我理解的線性回歸就是,比較簡單的一維的線性回歸,所要求解的方程就是y=wx+b你要做的就是不斷的學習資料集,不斷的更新w和b,讓損失函式越小越好。
損失函式便是你程式求得的結果和標準結果之間的誤差,損失函式具體公式如下:
w值梯度下降公式:w'=w-學習速率*斜率b值梯度下降公式:b'=b-學習速率*斜率繪製的資料集影象:# 線性回歸:y=0.3x+0.7
import numpy as np
import matplotlib.pyplot as plt
import time
# 損失函式
def data_loss(w, b, dataset):
loss = 0
for i in range(len(dataset)):
x = dataset[i][0]
y = dataset[i][1]
loss += (w * x + b - y) ** 2
loss /= float(len(dataset))
return loss
# 更新w和b
def update_w_b(w, b, learningrate, dataset):
wslope = 0.0
bslope = 0.0
for i in range(len(dataset)):
xi = dataset[i][0]
yi = dataset[i][1]
# 計算w和b的斜率
wslope += 2 * (w * xi + b - yi) * xi / float(len(dataset))
bslope += 2 * (w * xi + b - yi) / float(len(dataset))
# 計算學習過一邊之後的w,b,並返回,,具體推導公式看**區上邊
w1=w-learningrate*wslope
b1=b-learningrate*bslope
# 返回更新後的w和b
return [w1,b1]
def run_study(learningrate, dataset, studynum, w, b):
w1=w
b1=b
for i in range(studynum):
# 傳參一定要注意,要傳w1,b1,這樣才能學習
w1, b1 = update_w_b(w1, b1, learningrate, dataset)
print("--------------------------------------")
print("study :\nw=\nb=\ndata_loss="
.format(i + 1, w1, b1, data_loss(w1, b1, dataset)))
if __name__ == '__main__':
# 定義乙個計時器
tic=time.time()
# 學習速率
learningrate = 0.002
# 學習次數
studynum = 2000
# 資料集
dataset =
# 構造線性方程
for i in range(studynum):
x = np.random.normal(0.0, 1)
# 要學習的線性方程:y=0.3x+0.7
y = 0.3 * x + 0.7 + np.random.normal(0, 0.03)
# 列印一下看看資料集效果
xdata = [i[0] for i in dataset]
ydata = [i[1] for i in dataset]
plt.scatter(xdata, ydata)
plt.show()
# 開始學習
run_study(learningrate, dataset,studynum, 0, 0)
# 記錄學習用時
toc=time.time()
print("time : "+str(1000*(toc-tic))+"ms")
# 最終結果:
# study 2000:
# w=0.29921579295614104
# b=0.699757591874389
# data_loss=2.8178229011593263e-07
# time : 5248.762607574463ms
深度學習入門實戰系列筆記(1) 線性回歸實戰
深度學習入門實戰系列筆記 1 線性回歸實戰 目錄梯度下降法簡介 梯度下降演算法的思想 選擇合適的損失函式,開始時隨機選擇乙個引數作為初值,選擇合適的學習率,即步長。在訓練過程中不斷迭代出下乙個能夠使得損失函式下降速度最快的引數。持續計算直到尋找到乙個區域性最小值,而初值的不同可能會造成函式尋找到不同...
深度學習實踐(1) 線性回歸
這次主要是初步用窮舉法實現深度學習的線性回歸。假設給出一組資料符合y 2x,這裡的2我們並不知道,是要求的未知量。如何求呢?用窮舉法。我們知道線性函式是y w x 假設b 0 設w 1 把x帶入,得到y pre y的 值 而損失函式就是loss y y pre 2 當loss最小時,也就是得到了最符...
機器學習實戰之線性回歸
之前我們學習的機器學習演算法都是屬於分類演算法,也就是 值是離散值。當 值為連續值時,就需要使用回歸演算法。本文將介紹線性回歸的原理和 實現。如圖所示,這時一組二維的資料,我們先想想如何通過一條直線較好的擬合這些散點了?直白的說 盡量讓擬合的直線穿過這些散點 這些點離擬合直線很近 目標函式 要使這些...