トップページ -> 最新情報技術の実習と研究ツール -> オープンデータの活用 -> VBGMM (Variational Bayesian Gaussian Mixture) を用いてクラスタリング
[サイトマップへ]  

データの次元削減(t-SNE 法など)

VBGMM では,クラスタを指定せずにクラスタリングを行う


前準備

Anaconda のインストール

前準備として,Python 開発環境のAnaconda のインストールが終わっていること.

Windows での Anaconda のインストール手順は、 別の Web ページに記載しています

Ubuntu での Anaconda のインストール手順は、 別の Web ページに記載しています

以下,Windows に Anaconda をインストール済みであるものとして説明を続けます.

隔離された Python 環境の作成.spyder, numpy, scikit-learn のインストール

Windows での 手順は、 「Windows で,隔離された Python 環境 + Keras + TensorFlow + OpenCV + spyder + Dlib 環境を作る(Anaconda を利用)」のページで説明しています.

以下,Windows での Anaconda をインストール済み, 隔離された Python 環境(名前は ai)に、spyder, numpy, scikit-learn をインストール済みであるものとして説明を続けます.


実行例

Python プログラムを動かしたい. そのために, IPython シェルのコンソールで、Python 環境(名前は ai)を使う

Anacondaに入っている開発環境 spyder を実行し,右下の ipython コンソールを使うのが簡単.

※ Windows のスタートメニューで、 「spyder」の方ではなく、 「spyder(ai)」を開く。 これで、spyder の中で、Python環境aiが有効になる

※「spyder(ai)」がない!というときは、Windowsのコマンドプロントで次を実行して、spyder をインストールする

activate ai
conda install -y -c spyder-ide spyder 

※ Windows のスタートメニューで起動できないときは、Windowsのコマンドプロントで次を実行

activate ai
spyder
  1. iris データセットの確認
    import numpy as np
    from sklearn.datasets import load_iris
    
    iris = load_iris()
    
    print(iris.data.shape)
    print(iris.data.ndim)
    print(iris)
    

  2. VBGMM (Variational Bayesian Gaussian Mixture) を用いてクラスタリング
    import numpy as np
    from sklearn.datasets import load_iris
    
    iris = load_iris()
    
    vbgmm = BayesianGaussianMixture(n_components=10, verbose=1).fit(iris.data) 
    c = vbgmm.predict(iris.data) 
    
    print(c)
    

    乱数を使っているので、実行するたびに違った値になる

  3. 散布図にプロット
    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.manifold import TSNE
    
    iris = load_iris()
    
    vbgmm = BayesianGaussianMixture(n_components=10, verbose=1).fit(iris.data) 
    c = vbgmm.predict(iris.data) 
    
    d = TSNE(n_components = 2).fit_transform(iris.data) 
    
    %matplotlib inline
    from matplotlib import pyplot as plt
    plt.scatter(d[:,0], d[:,1], c=c)