import numpy as np
import matplotlib.pyplot as plt
#隨機生成x和y, n=100, m=2
x = np.random.randn(100, 2)
y = x.dot(np.array([[2], [1]])) + 1
#初始話權值w和偏置b
w = np.zeros(x.shape[1]).reshape((x.shape[1], 1))#
b = 0
#設定超參
epoches = 100
alpha = 0.1
#誤差追蹤
error =
#開始迭代
for e in range(epoches):
y_hat = np.dot(x, w) + b #計算y_hat
err = y_hat - y
error += [err.sum() ** 2 / (2 * len(x))]#計算損失函式
delta_w = x.t.dot(err) / (len(x)) #計算w偏導
delta_b = sum(err) / len(x) #計算b的偏導
#更新w和b
w -= delta_w * alpha
b -= delta_b * alpha
print(w)
print(b)
plt.plot(error)
plt.show()
w和b,可以看出與真實值基本一致
誤差追蹤,誤差不斷下降
在算偏導的時候一定不要忘了除以樣本數,在處理資料x時盡量把值域控制的小一點,從而控制delta_w和delta_b的值,以免過大影響學習。
機器學習 感知器
x x1,x 2,x3 xd y i 1d wixi bi 這裡求和出的結果就是用這些特徵計算出來的總分,如果我們假定y threshold時,最終結果為1。否則y h x s ign i 1d w ixi th resh old 這個公式稱為perceptron hypothesis。1 可以對上...
機器學習 線性感知機模型
把斷斷續續學習的機器學習方面的東西整理一下,還是需要系統的記錄一下。線性 定義下面的的函式 ld是乙個函式集合,w是d維度的引數,b是定義在r的標量。所以整個函式就是標量。當y的值域是的時候,半空間可以定義為 在於w垂直的超平面上面的部分,資料被標記為正類,當在超平面的下面的話,資料被標記為負類。兩...
線性感知器(對Andrew講義的理解)
這麼一看,你可能會覺得奇怪,g z 顯然不可導,怎麼使用梯度下降呢?其實它和梯度下降只是形式上一樣。現在我們來繼續看一下這個update rule.如果y 1而g theta x 0,若xj 0,那麼theta j 將會增大,是整個函式的值增大,從而使得這個被分錯的資料向被分對的趨勢靠攏。若xj 0...