はじめに
この実験では、Python の scikit - learn ライブラリを使ってガウス混合モデル(GMM:Gaussian Mixture Models)を実装する方法を学びます。GMM は、データがいくつかのガウス分布の混合から生成されると仮定する確率モデルです。これらは、コンピュータビジョン、金融、バイオインフォマティクスなどの様々な分野でクラスタリングや密度推定タスクに広く使われています。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
このステップでは、この実験に必要なライブラリをインポートします。数値計算には NumPy を、データ可視化には Matplotlib を、GMM の実装には scikit - learn を使用します。
import numpy as np
import matplotlib.pyplot as plt
from sklearn import mixture
データの生成
このステップでは、異なる平均と共分散を持つ 2 つのガウス分布から構成されるサンプルデータセットを生成します。
n_samples = 500
np.random.seed(0)
C = np.array([[0.0, -0.1], [1.7, 0.4]])
X = np.r_[
np.dot(np.random.randn(n_samples, 2), C),
0.7 * np.random.randn(n_samples, 2) + np.array([-6, 3]),
]
ガウス混合モデルの実装
このステップでは、scikit - learn のGaussianMixtureクラスを使ってガウス混合モデルを実装します。このモデルをデータセットに適合させ、各データポイントのクラスタラベルを予測します。最後に、結果をプロットします。
## Create a GMM object with 5 components
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full")
## Fit the GMM to the data
gmm.fit(X)
## Predict the cluster labels
Y_ = gmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Gaussian Mixture Model")
plt.show()
ベイズ型ガウス混合モデルの実装
このステップでは、scikit - learn のBayesianGaussianMixtureクラスを使ってベイズ型ガウス混合モデルを実装します。このモデルは、ディリクレ過程事前分布を持ち、データに基づいて自動的にクラスタ数を適応させます。このモデルをデータセットに適合させ、各データポイントのクラスタラベルを予測します。最後に、結果をプロットします。
## Create a Bayesian GMM object with 5 components
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full")
## Fit the Bayesian GMM to the data
dpgmm.fit(X)
## Predict the cluster labels
Y_ = dpgmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Bayesian Gaussian Mixture Model with a Dirichlet process prior")
plt.show()
まとめ
この実験では、Python の scikit - learn ライブラリを使ってガウス混合モデルを実装する方法を学びました。また、データセットを生成し、モデルをデータに適合させ、結果をプロットする方法も学びました。GMM はクラスタリングと密度推定タスクに強力なツールであり、様々な分野で広く使用されています。