ls演算法是一種數學優化技術,也是一種機器學習常用演算法。他通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便的求得未知的資料(1),並使得這些求得的資料與實際資料之間誤差的平方和最小。除此之外最小二乘法還可用於曲線擬合(2),其他一些優化問題(3)也可通過最小化鞥能量或最大化熵用最小二乘法表示。
最小二乘法實際上解決的是當ax=c無解的情況下的最優解。# 兩個點a和c
a = np.array([[3], [1]])
c = np.array([[1], [3]])
# np.linalg.inv: 計算矩陣的逆
# np.linalg: 提供線性代數工具的模組
# x' = (a.t*a)^(-1)*a.t*c
aa = np.linalg.inv(a.t.dot(a))
b = a.t.dot(c)
l = aa.dot(b)
# p=ax'
p = a.dot(l)
x = np.linspace(-2, 2, 10)
x.shape = (1, 10)
# 畫出直線y=ax
# a:(2, 1)
# x:(1, 9)
# xx:(2, 9)
xx = a.dot(x)
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111)
ax.plot(xx[0, :], xx[1, :])
# 畫出a點
ax.plot(a[0], a[1], "ko")
# 畫出c點和p點的連線
ax.plot([c[0], p[0]], [c[1], p[1]], "r-o")
# 畫出oc曲線
ax.plot([0, c[0]], [0, c[1]], "m-o")
# 畫出座標軸
ax.axvline(x=0, color="b")
ax.axhline(y=0, color="b")
# 標寫每個點的字母
# margin: 偏移量
# ax.text: 在座標軸上新增文字
margin = 0.1
ax.text(a[0]+margin, a[1]+margin, r"a", fontsize=20)
ax.text(c[0]+margin, c[1]+margin, r"c", fontsize=20)
ax.text(p[0]+margin, p[1]+margin, r"p", fontsize=20)
ax.text(0+margin, 0+margin, r"o", fontsize=20)
ax.text(0+margin, 4+margin, r"y", fontsize=20)
ax.text(4+margin, 0+margin, r"x", fontsize=20)
plt.xticks(np.arange(-2, 3))
plt.yticks(np.arange(-2, 3))
ax.axis("equal")
plt.show()
機器學習 神經網路
神經網路中最基本的成分是 神經元 模型,在生物神經網路中,每個神經元與其他神經元相連,當他 興奮 時,就會向相連的神經元傳送化學物質,從而改變這些神經元類的電位 如果某神經元的電位超過乙個 閾值 那麼他就會被啟用。將上述描述當成乙個數學模型 m p神經元模型,神經元接收來自n個神經元傳遞過來的輸入訊...
機器學習 神經網路
序列模型屬於通用模型的一種,因為很常見,所以這裡單獨列出來進行介紹,這種模型各層之間是依次順序的線性關係,在第k層合第k 1層之間可以加上各種元素來構造神經網路這些元素可以通過乙個列表來制定,然後作為引數傳遞給序列模型來生成相應的模型。01 keras model sequential.py fro...
機器學習 神經網路
人工神經網路被用於處理大量輸入以及非線性問題。與回歸方法不同,回歸方法只能處理未知數組成的多項式構成的線性問題,即只能處理簡單的關於未知數多項式的非線性問題。而神經網路利用多層網路這一優勢,能夠處理複雜的非線性問題。theta 的維數為s times s j 1 如上圖所示,分類問題分為兩種 對於這...