Python Numpy 100題實驗(九):幾種標準化演算法實現
阿新 • • 發佈:2018-12-14
單獨把這幾道題目拿出來,歸為一類吧,都是標準化演算法。 本講的主要內容:
- Z-Score標準化演算法
- Min-Max標準化演算法
- 應用L2正規化標準化資料
使用Z-Score標準化演算法對資料進行標準化處理
首先給出Z-Score標準化公式:
其實知道了公式就好算了,只是對之前的一些計算進行了一個綜合
def zscore(a,axis=None): amean = np.mean(a, axis=axis,keepdims=True ) astd = np.std(a, axis=axis, keepdims=True) return (a - amean)/astd a = np.random.randint(1, 10, 10) print(zscore(a))
輸出:
[-0.55418416 1.07576925 0.74977857 1.07576925 0.42378789 1.40175994
-0.55418416 -1.20616553 -1.20616553 -1.20616553]
使用Min-Max 標準化演算法對資料進行標準化處理
公式:
還是一樣
def minmax(a, axis=None): a_min = np.min(a, axis=axis, keepdims=True) a_max = np.max(a, axis=axis, keepdims=True) return (a - a_min)/(a_max - a_min) a = np.random.randint(1, 10, (3,3)) print(minmax(a))
輸出:
[[0.57142857 0.42857143 1. ]
[0.28571429 0.28571429 0.42857143]
[1. 1. 0. ]]
使用L2範數對資料進行標準化處理
L2範數的計算公式: 根據計算公式寫出函式:
def l2_normalize(v, axis=-1, order=2): l2 = np.linalg.norm(v, ord=order, axis=axis, keepdims=True) l2[l2==0] = 1 return v/l2 z = np.random.randint(1, 10, (3,3)) print(l2_normalize(z))
輸出:
[[0.11547005 0.80829038 0.57735027]
[0.88345221 0.33129458 0.33129458]
[0.64465837 0.24174689 0.72524067]]
使用Numpy將實驗室LOGO轉化所謂Ndarray陣列
這是最後一個實驗了,實驗樓這一波廣告。。猝不及防。。
直接附上參考答案好了:
from io import BytesIO
from PIL import Image
import PIL, requests
# 通過連結下載影象
URL = 'https://static.shiyanlou.com/img/logo-black.png'
response = requests.get(URL)
# 將內容讀取為影象
I = Image.open(BytesIO(response.content))
# 將影象轉換為 Ndarray
shiyanlou = np.asarray(I)
shiyanlou
Numpy100題的實驗終於整理完了耶!
完結撒花!
以上~