【scikitlearn】主成分分析(PCA)をやってみた

こんにちは、のっくんです。

今日は主成分分析について、かなり分かりやすく説明します。

主成分分析するメリットは一言で言うと、

「次元数の削減です」

例えば、

「身長、体重、年、性別」

の4つのデータがあったとして、これを主成分分析することにより2つのデータ(主成分1と主成分2)に変換することができます。

このように4から2に次元数を削減することで、データ容量を減らせるメリットがあります。

PythonのScikitLearnでPCAのやり方を見ていきましょう。

Google Colabを使ってコードを書いていきます。

Google Colabにはsklearnなどの今回使用するライブラリが全部インストールされています。

スポンサーリンク

使用するデータ

使用するデータはこちら。

UCIのレポジトリにあるアヤメのデータセット。

本ブログでも何回か登場しています。

花ビラの長さを含む4つの特徴から構成されています。

標準化と主成分分析

PCAを行う前にこの4次元のデータを標準化して、-1から1の範囲に収める必要があります。

sklearnに付属しているStandardScalarを使い標準化します。

次にPCAで主成分分析をします。

コンポーネント数を2に指定することで、2つの主成分に分解します。

以下のコードで、この2つの主成分の分散説明率と固有ベクトルが分かります。

分散説明率を足すと95%となり、元の4次元のデータの約95%の情報を2次元で保持していることが分かります。

データの2Dマッピング

主成分のデータを図にマッピングしてみます。

アヤメの種類は3種類なので、それぞれRGBで表すようにします。

3種類のアヤメが二次元上に分別して表示されました。

4次元のデータを2次元で表現できるってすごくないですか?

元データの95%がこの2次元の特徴で表せているんです。

主成分分析ってすげえ。

おわり。

参考

https://ashutoshtripathi.com/2019/07/11/a-complete-guide-to-principal-component-analysis-pca-in-machine-learning/?source=post_page—————————