クラスタ


非指導学習を参照してください.

💡 クラスタ


  • オブジェクトが与えられたときに、オブジェクトをいくつかのクラスタ(一部のグループ)に分割するプロセス.
  • 類似サンプルを収集する作業.

  • 代表的な非指導学習の一つである.

  • オブジェクトをグループ化するプロセスでは、クラスタ内のメンバー間の距離を近接または類似させ、2つの異なるクラスタ内のメンバー間の距離を異なるまたは類似させることを目標とします.

  • 01.クラスタ(クラスタ、一部グループ)

  • クラスタアルゴリズムによって作成されたグループ
  • 02.集中型(Centroid、クラスタセンター)

  • 各クラスタの中心.
  • パスワード


    01.分析画素値

    apple = fruits[0:100].reshape(-1, 100*100)
    pineapple = fruits[100:200].reshape(-1, 100*100)
    banana = fruits[200:300].reshape(-1, 100*100)
    
    print(apple.shape)
    
    print(apple.mean(axis=1))
    
    plt.hist(np.mean(apple, axis=1), alpha=0.8)
    plt.hist(np.mean(pineapple, axis=1), alpha=0.8)
    plt.hist(np.mean(banana, axis=1), alpha=0.8)
    plt.legend(['apple', 'pineapple', 'banana'])
    plt.show()
    
    fig, axs = plt.subplots(1, 3, figsize=(20, 5))
    axs[0].bar(range(10000), np.mean(apple, axis=0))
    axs[1].bar(range(10000), np.mean(pineapple, axis=0))
    axs[2].bar(range(10000), np.mean(banana, axis=0))
    plt.show()
    
    apple_mean = np.mean(apple, axis=0).reshape(100, 100)
    pineapple_mean = np.mean(pineapple, axis=0).reshape(100, 100)
    banana_mean = np.mean(banana, axis=0).reshape(100, 100)
    
    fig, axs = plt.subplots(1, 3, figsize=(20, 5))
    axs[0].imshow(apple_mean, cmap='gray_r')
    axs[1].imshow(pineapple_mean, cmap='gray_r')
    axs[2].imshow(banana_mean, cmap='gray_r')
    plt.show()

    各果物の写真の平均値の違いを表示


    (果物:0-100りんご、100-200パイナップル、200-300バナナ)

  • print(apple.shape):アップルアレイサイズ
  • print(apple.mean(axis=1)):各サンプルのピクセル平均を計算します.
    :axis=0-最初の軸の行で計算/axis=1-2番目の軸の列で計算します.
  • サンプルの平均分布をヒストグラムで表示


    axis = 1

  • plt.hist(np.mean(apple, axis=1), alpha=0.8):alpha-1未満は透明度を提供します.
  • plt.legend(['apple', 'pineapple', 'banana']):legend-表示例
  • plt.show()
  • ピクセルの平均値を棒グラフで表示


    axis = 0

  • plt.show()
  • 画素平均値を100*100に変更し、画像形式で出力する

  • plt.show():値のサイズはピクセルの位置によって異なります.
  • 02.平均値に近い写真を選択

    abs_diff = np.abs(fruits - apple_mean)
    
    abs_mean = np.mean(abs_diff, axis=(1,2))
    print(abs_mean.shape)
    
    apple_index = np.argsort(abs_mean)[:100]
    
    fig, axs = plt.subplots(10, 10, figsize=(10,10))
    for i in range(10):
        for j in range(10):
            axs[i, j].imshow(fruits[apple_index[i*10 + j]], cmap='gray_r')
            axs[i, j].axis('off')
    plt.show()
  • abs_diff = np.abs(fruits - apple_mean):apple mean-アップルの平均値
    :abs()-割引の関数、npを計算します.absolute()関数と同じです.
    :abs diff-(3001000100)サイズのアレイ
  • abs_mean = np.mean(abs_diff, axis=(1,2)):axisで、各サンプルの平均値を求める2つまたは3つの次元を指定します.
    :abs mean-各サンプルの誤差平均、サイズ(300,)の1次元アレイ
  • print(abs_mean.shape): (300,)
  • apple_index = np.argsort(abs_mean)[:100]:値が小さい順(apple meanと誤差が最小のサンプル)に100個選択
    :argsort()-小さい順から大きい順のシーケンスから出たabs mean配列のインデックスを返します.
  • 返されたインデックスから、最初の100個のドラフト10*10グラフィックを選択します。

  • axs[i, j].axis('off'):axis(「off」)-座標軸をスキップ
  • plt.show()
  • コード#コード#


    https://github.com/arittung/Deep_Learning_Study

    リファレンス

  • https://www.secmem.org/blog/2019/05/17/clustering/
  • [韓光メディア]独自学習の機械学習+深さ学習、朴海善著