トップページデータ処理主成分分析,次元削減Iris データセットの主成分分析プロット(Python, matplotlib, seaborn を使用)

Iris データセットの主成分分析プロット(Python, matplotlib, seaborn を使用)

Iris データセットの主成分分析を行い,第1主成分スコアと第2主成分スコアをプロットする.

主成分分析により次元削減ができる.

ある花の属性は、「5.1 3.5 1.4 0.2」という4つの数値属性を持ち、 別の花の属性は、「4.9 3.0 1.4 0.2」という4つの数値属性を持つとする。

数値属性の個数のことを「次元」と言ったりする。

上で書いた花は、どちらも4次元である。

次元が大きすぎると、解析がうまく行かなかったり、人工知能の学習がうまくいかないという可能性がある。 元のデータで、互いの類似性を保ったままで、より少ない個数の数値属性を作ることを 次元削減という。

この資料の URL: https://www.kkaneko.jp/data/pca/pca.html

目次

  1. Google Colab へのリンク
  2. 前準備
  3. Iris データセットの準備
  4. Iris データセットの主成分分析プロット

【サイト内の関連ページ】

1. Google Colab へのリンク

このページの内容は,Google Colaboratory でも実行できる.

そのために,次の URL で,Google Colaboratory のノートブックを準備している.

次のリンクをクリックすると,Google Colaboratoryノートブックが開く. そして,Google アカウントでログインすると,Google Colaboratory のノートブック内のコードを実行することができる.Google Colaboratory のノートブックは書き換えて使うこともできる.このとき,書き換え後のものを,各自の Google ドライブ内に保存することもできる.

https://colab.research.google.com/drive/1nWjnjxgPrldV75OCUcp3RFEV_baeCs4D?usp=sharing

2. 前準備(上のリンクを使わずに,自前で動かす場合)

Python の準備

Python プログラムを動かすために, Windows では「python」, Ubuntu では「python3」などのコマンドを使う.

あるいは, 開発環境や Python コンソール(Jupyter Qt ConsoleSpyderPyCharmPyScripter など)の利用も便利である.

あるいは,オンラインで動くGoogle Colaboratory のノートブックの利用も,場合によっては便利である.

Google Colaboratory のノートブックを使うか, 自分のパソコンで Python を動かすなどがありえる.

(1) (Google Colaboratory を使う場合Google Colaboratory のノートブックの準備

Google Colaboratory のノートブックを新規作成を行う.

  1. Google Colaboratory のWebページを開く

    https://colab.research.google.com

    Google Colab はオンラインの Python 開発環境. 使用するには Google アカウントが必要

  2. ファイル」で、「ノートブックを新規作成」を選ぶ

    [image]
  3. Google アカウントでのログインが求められたときはログインする

    [image]

    [image]

(2) (自分のパソコンで Python を動かす場合)Python の準備

Python のインストール: 別ページで説明している.,pip と setuptools の更新,Python 開発環境

Python の URL: http://www.python.org/

【Python, pip の使い方】

Python, pip は,次のコマンドで起動できる.

Python 開発環境のインストール】

Python の numpy,pandas,matplotlib,seaborn,scikit-learn のインストール

3. Iris データセットの準備

  1. Iris データセットの読み込み
    import pandas as pd
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    

    [image]
  2. データの確認
    print(iris.head())
    

    [image]
  3. 形と次元を確認

    配列(アレイ)の形: サイズは 150 ×5.次元数は 2. 最後の列は,iris.target は花の種類のデータである

    print(iris.shape)
    print(iris.ndim)
    

    [image]
  4. Iris データセットの0, 1, 2, 3列目を表示
    print( iris.iloc[:,0:4] )
    

    [image]

4. Iris データセットの主成分分析プロット

  1. 主成分分析プロットの前準備
    import numpy as np
    import sklearn.decomposition
    %matplotlib inline
    import matplotlib.pyplot as plt
    import warnings
    warnings.filterwarnings('ignore')   # Suppress Matplotlib warnings
    
    # 主成分分析
    def prin(A, n):
        pca = sklearn.decomposition.PCA(n_components=n)
        return pca.fit_transform(A)
    
    # 主成分分析で2つの成分を得る
    def prin2(A):
        return prin(A, 2)
    
    # M の最初の2列を,b で色を付けてプロット.b はラベル
    def scatter_label_plot(M, b, alpha):
        a12 = pd.DataFrame( M[:,0:2], columns=['a1', 'a2'] )
        f = pd.factorize(b)
        a12['target'] = f[0]
        g = sns.scatterplot(x='a1', y='a2', hue='target', data=a12, palette=sns.color_palette("hls", np.max(f[0]) + 1), legend="full", alpha=alpha)
        # lenend を書き換え
        labels=f[1]
        for i, label in enumerate(labels):
            g.legend_.get_texts()[i].set_text(label) 
        plt.show()
    
    # 主成分分析プロット
    def pcaplot(A, b, alpha):
        scatter_label_plot(prin2(A), b, alpha)
    
  2. 主成分分析プロット

    Iris データセットの0, 1, 2, 3列目については, 主成分分析により,サイズ 150 × 4 を,150 × 2 に変換

    X = iris.iloc[:,0:4].to_numpy()
    y = iris.iloc[:,4]
    
    pcaplot(X, y, 0.4)
    

    [image]