実験棟-Python Numpy 100題実験(九):いくつかの標準化アルゴリズムの実現


これらの問題を単独で出して、一つに分類しましょう.標準化アルゴリズムです.本説明の主な内容:
  • Z-Score標準化アルゴリズム
  • Min-Max標準化アルゴリズム
  • L 2パターン標準化データ
  • を適用
    Z-Score標準化アルゴリズムによるデータの標準化処理
    まずZ−Score標準化式を与える:Z=X−m e a n(X)s d(X)Z=frac{X−mean(X)}{sd(X)}Z=sd(X)X−mean(X)
    実は公式を知っていればいいのですが、前の計算を総合しただけです.
    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標準化アルゴリズムによるデータの標準化処理
    式:Y=Z−m i n(Z)m a x(Z)−m i n(Z)Y=frac{Z−min(Z)}{max(Z)−min(Z)}Y=max(Z)−min(Z)Z−min(Z)
    相変わらず
    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.        ]]
    

    L 2ノルムを用いたデータの標準化処理
    L 2ノルムの計算式:L 2=x 1 2+x 2+..+x i 2 L_{2} =\sqrt{x_{1}^{2} + x_{2}^{2}+...+x_{i}^{2}} L2​=x12​+x22​+...+xi 2計算式に基づいて関数を書き出します.
    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
    

    Numpy 100問題の実験はやっと片付けましたね.
    终わって花を撒く!
    以上