LoginSignup
0
2

More than 3 years have passed since last update.

LabVIEWを使ってペンギンデータセットを主成分分析してみた

Posted at

はじめに

本記事は、LabVIEWを使った主成分分析について解説しています。
パルマーペンギンデータに対して、主成分分析をおこない、約90%の情報量を保持したまま2次元データへ次元圧縮可能なことを確認できました。
LabVIEWによる統計処理作成の際に参考になれば幸いです。

パルマーペンギンデータセット

有名なアイリスデータセットに取って代わることを目標としたデータセットのようです。パルマー諸島に生息するアデリーペンギン、ジェンツーペンギン、ヒゲペンギンの3種のペンギンについて、生息する島、くちばしの長さ、くちばしの高さ、羽の長さ、体重、性別、西暦のデータが格納されています。アデリーペンギンはスイカペンギンのモデルのようです。

palmerpenguins
https://allisonhorst.github.io/palmerpenguins/

image.png

くちばしの長さ、高さ、ひれの長さ、体重をペアプロットした結果
image.png

処理の流れ

データセットから抽出した、オスのくちばしの長さ、くちばしの高さ、ひれの長さ、体重のデータに対して主成分分析をおこない、第1、第2主成で散布図を作成しました。
処理の流れは以下のとおりです。

  1. データセットをcsv形式で保存する。(*Pythonで実行)
  2. LabVIEWでcsvファイルを読み込む。
  3. 標準化する。
  4. 共分散行列を求める。
  5. 共分散行列の固有値と固有ベクトルを求める。
  6. 第1,第2,第3,第4主成分がなす空間へ標準データを射影する。
  7. 第1,第2主成分を抽出し散布図を作成する。

viのフロントパネル
image.png

viのダイアグラム
PCA_Penguin.png

処理の説明

順番に処理を説明します。

1.データセットをcsv形式で保存する。(*Pythonで実行)
オスのデータを抽出した後、データをcsvファイルへ書き出します。


from palmerpenguins import load_penguins
penguins = load_penguins()

male = penguins.query("sex == 'male'")
male.to_csv("./penguins_male.csv",
     columns=["bill_length_mm", "bill_depth_mm","flipper_length_mm", "body_mass_g","species"],index=False)

2.LabVIEWでcsvファイルを読み込む。
左下の処理で散布図が正方形となるようサイズを調整しています。
image.png
3.標準化する。
読み込んだデータを、平均値=0、分散=1に標準化します。
image.png
下図は元のデータと標準化したデータを散布図にプロットした結果です。
くちばしの長さ、くちばしの高さ、ひれの長さ、体重、すべてのデータを標準化していますが、ここでは2次元で表現するため、くちばしの長さと高さのデータを抽出し散布図を作成しています。
赤の標準化データの中心が0付近へ移動していることが確認できます。
image.png
4.共分散行列を求める。
元データと標準化後のデータに対して、Covariance Matrix.viを使い共分散行列を求めました。
image.png
標準化データの対角成分が1付近となっていることが確認できます。
Covariance Matrix.viは不偏分散を返します。
image.png
5.共分散行列の固有値と固有ベクトルを求める。
Eigenvalues and Vectors.viを使い算出しました。
image.png
下図が結果です。
固有ベクトルは、元データの分散が大きい方向をあらわすベクトルです。第1主成分がもっとも分散が大きい方向となります。
固有値は、各主成分方向における分散をあらわします。
寄与率は、各主成分がもつ分散の比率になり、ペンギンデータの場合、第1、第2主成分でおおよそ90%の情報を持っていることになります。
つまり、4次元のデータから第1,第2主成分の2次元のデータへ圧縮した場合においても、全体の90%の情報を保持していることになります。
image.png
6.主成分がなす空間へ標準データを射影する。
固有ベクトルを列の要素とする行列と標準化データを掛け算し、第1,第2,第3,第4主成分がなす空間へ標準データを射影します。
ここでもLabVIEWの標準関数を使って行列積を計算しています。
image.png
7.第1,第2主成分を抽出し散布図を作成する。
第1,第2主成分を抽出しXYグラフを使って散布図を作成しました。
image.png
image.png

まとめ

LabVIEWでも問題なく主成分分析処理の実装が実現できました。
LabVIEWはマウス操作でGUIを自由自在に編集できるので、結果のビジュアライズを楽に実現できました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2