多変量正規分布の可視化

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の Matplotlib を使って多変量正規分布に対するさまざまな正規化を調べます。この実験では、線形正規化、パワーロー正規化、および Matplotlib を使って多変量正規分布を視覚化する方法について学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習します。

場合によっては、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

このステップでは、必要なライブラリをインポートする必要があります。それは、MatplotlibNumPy、およびNumPy.randomからのMultivariate_normalです。

import matplotlib.pyplot as plt
import numpy as np
from numpy.random import multivariate_normal

乱数シードの設定

このステップでは、再現性のために乱数シードを設定する必要があります。

np.random.seed(19680801)

データの作成

このステップでは、multivariate_normal() を使ってデータを作成する必要があります。この関数は、多変量正規分布からの乱数サンプルを生成します。

data = np.vstack([
    multivariate_normal([10, 10], [[3, 2], [2, 3]], size=100000),
    multivariate_normal([30, 20], [[3, 1], [1, 3]], size=1000)
])

ヒストグラムの作成

このステップでは、hist2d() を使ってヒストグラムを作成する必要があります。hist2d() 関数は、2 次元のヒストグラムを作成するために使用されます。

plt.hist2d(data[:, 0], data[:, 1], bins=100)

パワー法則正規化の作成

このステップでは、PowerNorm() を使用してパワー法則正規化を作成する必要があります。

plt.hist2d(data[:, 0], data[:, 1], bins=100, norm=mcolors.PowerNorm(gamma))

サブプロットの作成

このステップでは、subplots() を使ってサブプロットを作成する必要があります。

fig, axs = plt.subplots(nrows=2, ncols=2)

線形正規化の作成

このステップでは、線形正規化を作成する必要があります。

axs[0, 0].hist2d(data[:, 0], data[:, 1], bins=100)

パワー法則正規化の作成

このステップでは、異なるガンマ値でパワー法則正規化を作成する必要があります。

for ax, gamma in zip(axs.flat[1:], gammas):
    ax.hist2d(data[:, 0], data[:, 1], bins=100, norm=mcolors.PowerNorm(gamma))

タイトルの設定

このステップでは、各プロットのタイトルを設定する必要があります。

axs[0, 0].set_title('Linear normalization')

for ax, gamma in zip(axs.flat[1:], gammas):
    ax.set_title(r'Power law $(\gamma=%1.1f)$' % gamma)

タイトなレイアウト

このステップでは、サブプロット間の間隔を調整する必要があります。

fig.tight_layout()

プロットの表示

このステップでは、show() を使ってプロットを表示する必要があります。

plt.show()

まとめ

この実験では、Python の Matplotlib を使って多変量正規分布に対するさまざまな正規化を検討しました。線形正規化、パワー法則正規化、および Matplotlib を使って多変量正規分布を視覚化する方法について学びました。