トップページ -> データの扱い -> 次元削減 -> 主成分分析プロット(Iris データセット,Python を使用)
[サイトマップへ], [サイト内検索へ]

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

目次

  1. iris データ
  2. 主成分分析によるプロット

iris データ


主成分分析によるプロット

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

    https://colab.research.google.com

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

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

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

    [image]

    [image]
  4. パッケージのインポートと TenforFlow のバージョン確認
    from __future__ import absolute_import, division, print_function, unicode_literals
    import tensorflow.compat.v2 as tf
    import tensorflow_datasets as tfds
    import numpy as np
    import matplotlib.pyplot as plt
    tf.enable_v2_behavior()
    
    print(tf.__version__)
    

    [image]
  5. X の確認表示

    「主成分分析」を用いて、X のサイズ 150 × 4 を、 150 × 2 に変換. そして、150 個の点としてプロット

    import pandas as pd
    import seaborn 
    import sklearn.decomposition
    import matplotlib.pyplot as plt
    
    import sklearn.datasets
    iris = sklearn.datasets.load_iris()
    X = iris.data
    y = iris.target
    
    # 主成分分析で第2次元のサイズを2に
    def prin2(A):
        pca = sklearn.decomposition.PCA(n_components=2)
        pca.fit(A)
        return pca.fit_transform(A)
    
    plt.scatter(prin2(X)[:,0], prin2(X)[:,1])
    

    [image]

    [image]
  6. Xy の確認表示

    y を使って、点に色を付ける

    import pandas as pd
    import seaborn 
    import sklearn.decomposition
    import matplotlib.pyplot as plt
    
    import sklearn.datasets
    iris = sklearn.datasets.load_iris()
    X = iris.data
    y = iris.target
    
    # 主成分分析で第2次元のサイズを2に
    def prin2(A):
        pca = sklearn.decomposition.PCA(n_components=2)
        pca.fit(A)
        return pca.fit_transform(A)
    
    def scatter_color(A2, b, alpha):
        a12 = pd.DataFrame( A2, columns=['a1', 'a2'] )
        a12['target'] = b
        seaborn.lmplot(x='a1', y='a2', data=a12, hue='target', scatter_kws={'alpha': alpha}, fit_reg=False)
    
    scatter_color(prin2(X), y, 1)
    

    [image]

[image]
  • X_train, y_train, X_test, y_test に iris データを設定

    次の Python プログラムを実行

    X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, train_size=0.5) 
    # 2次元の配列. 要素は float64, 最大値と最小値を用いて正規化
    import numpy as np
    import keras
    def normalizer(A):
        M = np.reshape(A, (len(A), -1))
        M = M.astype('float32')
        max = M.max(axis=0)
        min = M.min(axis=0)
        return (M - min)/(max - min)
    X_train = normalizer(X_train)
    X_test = normalizer(X_test)
    y_train_logit = keras.utils.to_categorical(y_train)
    y_test_logit = keras.utils.to_categorical(y_test)
    

    [image]
  • X_train, y_train, X_test, y_test の確認表示

    y_train, y_test を使って、点に色を付ける

    先ほどと同じ散布図が得られるはずである

    import pandas as pd
    import seaborn 
    import sklearn.decomposition
    import matplotlib.pyplot as plt
    
    # 主成分分析で第2次元のサイズを2に
    def prin2(A):
        pca = sklearn.decomposition.PCA(n_components=2)
        pca.fit(A)
        return pca.fit_transform(A)
    
    def scatter_color(A2, b, alpha):
        a12 = pd.DataFrame( A2, columns=['a1', 'a2'] )
        a12['target'] = b
        seaborn.lmplot(x='a1', y='a2', data=a12, hue='target', scatter_kws={'alpha': alpha}, fit_reg=False)
    
    scatter_color(prin2(np.concatenate( (X_train, X_test) )), np.concatenate( (y_train, y_test) ), 1)
    
    pcaplot(np.concatenate( (X_train, X_test) ), np.concatenate( (y_train, y_test) ), 1)

    [image]

    [image]

    本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

    問い合わせ先: 金子邦彦(かねこ くにひこ) [image]