1.2.1對象與維度的概念
1.類比面向?qū)ο箝_發(fā)程序語言中的對象概念,在機器學(xué)習(xí)中夷家,對象指的是含有一組特征的行向量
2.對象的維度指的是行向量的列數(shù)
表1.1
如上表中腕唧,非洲象就是一個對象實例,他的特征向量維度為5瘾英。
2.在機器學(xué)習(xí)中,對于圖片的處理也會進行向量化颂暇。一張圖片可以處理成一個高維度的向量缺谴。
3.在文本類數(shù)據(jù)集的處理中,機器學(xué)習(xí)會根據(jù)文本內(nèi)容生成詞袋列表耳鸯,將每個詞出現(xiàn)的詞頻數(shù)數(shù)值化湿蛔,未出現(xiàn)為0,出現(xiàn)記為1县爬,多次出現(xiàn)則累加阳啥。
1.2.2初識矩陣
1.矩陣的特征
- 矩陣是具有相同特征和維度的對象集合
- 一個對象表示為矩陣中的一行,一個特鎮(zhèn)表示為矩陣中的一列财喳,每個特鎮(zhèn)都有數(shù)值型的取值
- 特征相同察迟、取值相異的對象集合所構(gòu)成的矩陣,是對象之間既相互獨立耳高,又相互聯(lián)系
- 有特征列的取值范圍所構(gòu)成的矩陣空間應(yīng)具有完整性扎瓶,即能夠反映出實物的空間形式或變化
2.矩陣的用途 - 解線性方程:比如二維矩陣可以理解為一個平面直角坐標(biāo)系內(nèi)的點集,通過計算點與點之間的距離泌枪,完成聚類概荷、分類或者預(yù)測。
- 方程降次:利用矩陣的二次型碌燕,通過升維將線性不可分的數(shù)據(jù)集英社到高維中去误证,轉(zhuǎn)換為線性可分的情形,這是支持向量機的基本原理之一修壕。
- 變換:矩陣可以通過特征值和特征向量完成維度約簡愈捅,簡化類似圖片這種高維度數(shù)據(jù)集的運算,主成分分析使用的就是這個原理叠殷。
1.2.3矢量化編程與GPU運算
略
1.2.4理解數(shù)學(xué)公式與Numpy矩陣運算
1.矩陣初始化
- 全0矩陣和全1矩陣
#創(chuàng)建3*5的全0矩陣
myZeros = np.zeros([3, 5])
print myZeros
#創(chuàng)建3*5的全1矩陣
myOnes = np.ones([3, 5])
print myOnes
- 生成隨機矩陣
#生成隨機矩陣
myRand = np.random.rand(3, 4)#3*4的0~1為元素的隨機數(shù)矩陣
print myRand
- 單位陣
#單位矩陣(方陣)
myEye = np.eye(3)
print myEye
2.矩陣的元素運算
- 元素相加和相減
# 條件:矩陣的行數(shù)和列數(shù)必須相同
myOnes = ones(3)
myEye = eye(3)
print myOnes + myEye
print myOnes - myEye
- 矩陣數(shù)乘:一個數(shù)乘以一個矩陣
# 條件:矩陣的每個元素都與該數(shù)相乘
mymatrix = mat("1,2,3;4,5,6;7,8,9")
a = 10
print a * mymatrix
- 矩陣所有元素求和
mymatrix = mat("1,2,3;4,5,6;7,8,9")
print sum(mymatrix)
- 矩陣各元素的積(矩陣點乘)
# 條件:同維度元素相乘改鲫,維度不同時可通過廣播規(guī)則擴充
mymatrix2 = 1.5 * ones(3)
print np.multiply(mymatrix, mymatrix2)
- 矩陣各元素的n次冪
mylist = mat("1,2,3;4,5,6;7,8,9")
print np.power(mylist, 2)
- 矩陣運算
- 矩陣乘法
#條件:m*p矩陣a與p*n矩陣b相乘,得到m*n結(jié)果矩陣c, c矩陣(i,j)位置元素為a矩陣i行與b矩陣j列各元素乘積之和
mymatrix = mat("1,2,3;4,5,6;7,8,9")
mymatrix2 = mat("1;2;3")
print mymatrix * mymatrix2
- 矩陣轉(zhuǎn)置
#條件:矩陣元素行列互換
mymatrix = mat("1,2,3;4,5,6;7,8,9")
print mymatrix.T
np.transpose(mymatrix)
print mymatrix
4.矩陣的其他操作:行列數(shù)林束、切片像棘、復(fù)制、比較
- 行列數(shù)
mymatrix = mat("1,2,3;4,5,6;7,8,9")
[m, n] = shape(mymatrix)
print "矩陣的行數(shù)和列數(shù):",m, n
- 切片
#按行切片
myscl1 = mymatrix[0]
print "按行切片:", myscl1
#按列切片
myscl2 = mymatrix[:,0]
print "按列切片:", myscl2
#按列切片2
myscl3 = mymatrix.T[0]
print "按列切片:", myscl3
- 復(fù)制(淺拷貝壶冒、深拷貝)
#淺拷貝
a = mymatrix
#深拷貝
b = np.copy(mymatrix)
#當(dāng)改變mymatrix元素時缕题,淺拷貝矩陣也會改變其元素,而深拷貝不會改變
mymatrix[0] = mat("7,7,7")
print a
print b
- 比較
#矩陣比較:會對兩個矩陣的各元素依次比較胖腾,符合條件為True
print mymatrix < mymatrix.T
項目源代碼:github地址