天天看點

Python機器學習基礎知識和相關術語

目錄

  • ​​1 函數定義​​
  • ​​1.1 線性函數​​
  • ​​1.2 二次函數或多次函數​​
  • ​​1.3 激活函數​​
  • ​​2.4 對數函數​​
  • ​​2 機器學習的資料結構張量​​
  • ​​2.1 張量的概念​​
  • ​​2.2 标量——0D(階)張量​​
  • ​​2.3 向量——1D(階)張量​​
  • ​​2.4 矩陣——2D(階)張量​​
  • ​​2.5 序列資料——3D(階)張量​​
  • ​​2.6 圖像資料——4D(階)張量​​
  • ​​2.7 視訊資料——5D(階)張量​​
在學習之前先看一下:​​機器學習的數學基礎​​

1 函數定義

Python機器學習基礎知識和相關術語

首先所有函數都要滿足函數定義,函數的輸出值是獨一無二的。一個輸入絕對不能夠對應多個輸出。比如,一張狗的圖檔,鑒定後貼标簽時,認為既是哈士奇,又是德國牧羊犬。這種結果令人困惑,這樣的函數我們也不接受。

1.1 線性函數

線性函數是線性回歸模型的基礎,也是很多其他機器學習模型中最基本的結構單元。線性函數是隻擁有一個變量的一階多項式函數,函數圖像是一條直線。

Python機器學習基礎知識和相關術語

線性函數适合模拟簡單的關系,比如,同一個小區房屋的面積和其售價之間可能會呈現線性的關系。

1.2 二次函數或多次函數

函數中自變量x中最大的指數被稱為函數的次數,比如y=x^2就是二次函數。二次函數和多次函數的函數圖像更加複雜,因而可以拟合出更為複雜的關系,如下圖所示。

Python機器學習基礎知識和相關術語

1.3 激活函數

Python機器學習基礎知識和相關術語
Python機器學習基礎知識和相關術語

這組函數我們在數學課上也許沒見過,但是它們都十分簡單,它們的作用是在機器學習算法中實作非線性的、階躍性質的變換。其中的Sigmoid函數在機器學習的邏輯回歸模型中起着重要的作用。

2.4 對數函數

Python機器學習基礎知識和相關術語

函數圖像

Python機器學習基礎知識和相關術語

注:如果不指定對數的底,則稱x為自然對數,是以自然常數e為底數的對數。在邏輯回歸算法中,我們會見到自然對數作為損失函數而出現。

2 機器學習的資料結構張量

2.1 張量的概念

張量是機器學習程式中的數字容器,本質上就是各種不同次元的數組,如下圖所示。我們把張量的次元稱為軸(axis)(就是數學中的x軸,y軸,……),軸的個數稱為階(rank)(也就是俗稱的次元,但是為了把張量的次元和每個階的具體次元區分開,這裡統一把張量的次元稱為張量的階。NumPy中把它叫作數組的轶)。

Python機器學習基礎知識和相關術語

2.2 标量——0D(階)張量

Python機器學習基礎知識和相關術語
import numpy as np #導入Num Py庫 
X = np.array(5) #建立0D張量, 也就是标量
print("X的值", X)
print("X的階", X.ndim) #ndim屬性顯示标量的階
print("X的資料類型", X.dtype) #dtype屬性顯示标量的資料類型
print("X的形狀", X.shape) #shape屬性顯示标量的形狀      

運作結果:

Python機器學習基礎知識和相關術語

2.3 向量——1D(階)張量

由一組數字組成的數組叫作向量(vector),也就是一階張量,或稱1D張量。一階張量隻有一個軸。

X = np.array([5,6,7,8,9]) #建立1D張量,也就是向量
print("X的值",X)
print("X的階",X.ndim) #ndim屬性顯示張量軸的個數
print("X的形狀",X.shape) # shape屬性顯示張量形狀      

運作結果:

Python機器學習基礎知識和相關術語

2.4 矩陣——2D(階)張量

矩陣(matrix)是一組一組向量的集合。矩陣中的各元素橫着、豎着、斜着都能構成不同的向量。而矩陣,也就是 2 階張量,或稱 2D 張量,其形狀為(m,n)。比如,右圖所示是一個形狀為(4,3)的張量,也就是4 行 3 列的矩陣,一般就是表格資料長這個樣子。

import numpy as np # 導入NumPy數學工具集
list=[1,2,3,4,5] # 建立清單
array_01=np.array([1,2,3,4,5]) # 清單轉化成數組
array_02=np.array((6,7,8,9,10)) # 元組轉化成數組
array_03=np.array([[1,2,3],[4,5,6]]) # 清單轉化成2D數組
print ('清單:', list)
print ('清單轉化為數組:', array_01)
print ('元組轉化為數組:', array_02)
print ('2D數組:', array_03)
print ('數組的形狀:', array_01.shape)
# print ('清單的形狀:', list.shape) # 清單沒有形狀,程式會報錯      

運作結果:

Python機器學習基礎知識和相關術語

2.5 序列資料——3D(階)張量

Python機器學習基礎知識和相關術語
# 建立3D張量
X = np.array([[[1, 22, 4, 78, 2],
[2, 59, 6, 56, 1],
[3, 31, 8, 54, 0]],
[[4, 56, 9, 34, 1],
[5, 78, 8, 35, 2],
[6, 34, 7, 36, 0]],
[[7, 45, 5, 34, 5],
[8, 53, 6, 35, 4],
[9, 81, 4, 36, 5]]])      

運作結果:

Python機器學習基礎知識和相關術語

舉個現實的例子:

Python機器學習基礎知識和相關術語

因為增加了時戳,是以表裡面的行列結構顯得更為複雜。讀取入機器進行處理時,需要把行裡面的時間步拆分出來。

第一個軸—樣本軸,一年記錄下來的資料共365個,也就是365維。

第二個軸—時間步軸,每天一共是24小時,每小時4個15分鐘,共96維。

第三個軸—特征軸,一共是溫度、濕度、風力3個次元。

是以,這個資料集讀入機器之後的張量形狀是(365,96,3)。

2.6 圖像資料——4D(階)張量

圖像資料本身包含高度、寬度,再加上一個顔色深度通道。MNIST資料集中是灰階圖像,隻有一個顔色深度通道;而GRB格式的彩色圖像,顔色深度通道的次元為3。

是以,對于圖像資料集來說,長、寬、深再加上資料集大小這個次元,就形成了 4D 張量(如下圖所示),其形狀為(樣本,圖像高度,圖像寬度,顔色深度),如MNIST特征資料集的形狀為(60000,28,28,1)。

Python機器學習基礎知識和相關術語

2.7 視訊資料——5D(階)張量

機器學習的初學者很少有機會見到比4D更高階的張量。如果有,視訊資料的結構是其中的一種。

視訊可以看作是由一幀一幀的彩色圖像組成的資料集。、