線(xiàn)性回歸的普通最小二乘法。 普通最小二乘法 (OLS) 是一種在簡(jiǎn)單線(xiàn)性回歸中估計(jì)參數(shù) β 的方法,Xβ = y,其中 X 是特征矩陣,y 是因變量(或目標(biāo)),通過(guò)最小化給定數(shù)據(jù)集中觀察到的因變量與線(xiàn)性函數(shù)預(yù)測(cè)的因變量之間的差異。
那么話(huà)不多說(shuō)我們來(lái)看下下面這個(gè)代碼:
import numpy as np
import numpy as np
xn, xp = [2,2]
array = []
for i in range(2):
array = [1, 0,0 ,2]
x = np.array(array).reshape(2, 2)
y = np.array([2,3])
# .T 表示對(duì)該矩陣進(jìn)行轉(zhuǎn)置
a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)
print(a)
#輸出的內(nèi)容為:[2. 1.5]
在代碼?“a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)”
?中,?dot
?函數(shù)是矩陣乘,那么對(duì)于“*”則是表示為逐個(gè)元素相乘。我們可以看看下面的這個(gè)代碼:
dot函數(shù)使用:
a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
np.dot (a,b) #矩陣乘
結(jié)果:
?array( [[1,1],
[1,1]])
?
“*”使用:
a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
c = a*b #對(duì)應(yīng)元素相乘
結(jié)果:?array( [[1,0], [0,1]])
?
在通過(guò)代碼實(shí)現(xiàn)之后我們對(duì)于 ?dot
? 與?“*”
?使用的是有差別了。
np.linalg.inv() 是矩陣求逆的意思,除此之外還有 np.linalg.det() 矩陣求行列式 、 np.linalg.norm() 求范數(shù)和 np.linalg.eigh 計(jì)算矩陣特征向量。
矩陣轉(zhuǎn)置方法代碼分享如下:
#Python的matrix轉(zhuǎn)置
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
def printmatrix(m):
for ele in m:
for i in ele:
print("%2d" %i,end = " ")
print()
#1、利用元祖的特性進(jìn)行轉(zhuǎn)置
def transformMatrix(m):
#此處巧妙的先按照傳遞的元祖m的列數(shù),生成了r的行數(shù)
r = [[] for i in m[0]]
for ele in m:
for i in range(len(ele)):
#【重點(diǎn)】:此處利用m的第ele行i列,并將該值追加到r的i行上;巧妙的利用了i
r[i].append(ele[i])
#printmatrix(r)#方便查看數(shù)組是怎么賦值的,如不需要可注釋掉
#print("*"*20)#打印分隔符
return r
#2、利用zip函數(shù)生成轉(zhuǎn)置矩陣
def transformMatrix1(m):
return zip(*m)
#3、利用numpy模塊的transpose方法
def transformMatrix2(m):
import numpy
return numpy.transpose(m).tolist()
print("第一種方法結(jié)果展示")
printmatrix(transformMatrix(matrix))
print("第二種方法結(jié)果展示")
printmatrix(transformMatrix1(matrix))
print("第二種方法的簡(jiǎn)潔代碼展示")
printmatrix(zip(*matrix))#為了代碼更簡(jiǎn)潔,可以不用transformMatrix1函數(shù),直接打印
print("第三種方法的結(jié)果展示")
printmatrix(transformMatrix2(matrix))
運(yùn)行結(jié)果如下:
第一種方法結(jié)果展示
1 5 9
2 6 10
3 7 11
4 8 12
第二種方法結(jié)果展示
1 5 9
2 6 10
3 7 11
4 8 12
第二種方法的簡(jiǎn)潔代碼展示
1 5 9
2 6 10
3 7 11
4 8 12
第三種方法的結(jié)果展示
1 5 9
2 6 10
3 7 11
4 8 12
那么以上就是今天要和大家分享有關(guān)于python矩陣轉(zhuǎn)置的案例與矩陣轉(zhuǎn)置方法的相關(guān)內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。