我們需要使用numpy,這是乙個很方便的數**算庫,沒有的話可以開啟cmd輸入裝乙個
pip install numpy
然後我們只需要匯入numpy
import numpy as np
那麼求解可逆矩陣的逆我們可以用
numpy.linalg.inv(a)
其中a就是我們需要求逆的矩陣,在numpy裡面可以用ndarray來實現矩陣
簡單舉乙個例子
x=np.array([[
1,1]
,[1,
1]])
print
(x)
[[1 1]
[1 1]]
如果該矩陣是奇異矩陣的話就使用
numpy.linalg.pinv(a)
同時python中可以使用@來完成矩陣之間的點乘,這個特性是在python3.5新加的,如果使用版本沒有這個功能,可以用dot函式代替。
那麼接下來我們只需
def
normaleqn
(x, y)
:#可逆就選下面
theta = np.linalg.inv(x.t@x)@x.t@y #x.t@x
#不可逆就選這個
theta = np.linalg.pinv(x.t@x)@x.t@y #x.t@x
return theta
順帶一提pinv在可逆的時候也可以得到inv的結果,只是會慢一點而已 標準方程法(正規方程法)
為了求得引數 也可以不用迭代的方法 比如梯度下降法對同一批資料一直迭代 可以採用標準方程法一次性就算出了 而且還不用feature scaling 如果feature不多的話,比如一萬以下,用這種方法最好 標準方程法介紹 1 這裡面,x的第一列是人為新增的,為了方便運算的,都置為1,後面才是真正的特...
機器學習 正規方程
梯度下降法計算引數最優解,過程是對代價函式的每個引數求偏導,通過迭代演算法一步步更新,直到收斂到全域性最小值,從而得到最優引數。正規方程是一次性求得最優解。思想 對於乙個簡單函式,對引數求導,將其值置為0,就得到引數的值。像下面這樣 現實例子有很多引數,我們要對這些引數都求偏導數,得到各個引數的最優...
python實現正態分佈
就是非常簡單的用正態分佈的公式畫個圖即可,簡單方便 y sig np.exp x u 2 2 sig 2 math.sqrt 2 math.pi sig 或參考 統計學 四 python實現正態分佈 leolrh 正態分佈 normaldistribution 也稱 常態分布 又名高斯分布 gaus...