{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 主成分分析\n", "4次元のirisデータを2次元に次元削減" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ライブラリの読み込みとデータの確認" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "# 数値計算、ビジュアライゼーションライブラリの読み込み\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.decomposition import PCA\n", "from sklearn.datasets import load_iris\n", "iris_dataset = load_iris()\n" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])\n" ] } ], "source": [ "# irisデータセットのキーの確認\n", "print(iris_dataset.keys())" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['setosa' 'versicolor' 'virginica']\n" ] } ], "source": [ "# irisデータセットの品種の確認\n", "print(iris_dataset['target_names'])" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n" ] } ], "source": [ "# irisデータセットの特微量の確認\n", "print(iris_dataset['feature_names'])" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
\n", "
" ], "text/plain": [ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n", "0 5.1 3.5 1.4 0.2\n", "1 4.9 3.0 1.4 0.2\n", "2 4.7 3.2 1.3 0.2\n", "3 4.6 3.1 1.5 0.2\n", "4 5.0 3.6 1.4 0.2" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# PandasのDataFrameで特微量を表示\n", "df = pd.DataFrame(iris_dataset.data, columns=iris_dataset.feature_names)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## データの標準化(平均:0, 分散:1)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)
0-0.9006811.019004-1.340227-1.315444
1-1.143017-0.131979-1.340227-1.315444
2-1.3853530.328414-1.397064-1.315444
3-1.5065210.098217-1.283389-1.315444
4-1.0218491.249201-1.340227-1.315444
\n", "
" ], "text/plain": [ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n", "0 -0.900681 1.019004 -1.340227 -1.315444\n", "1 -1.143017 -0.131979 -1.340227 -1.315444\n", "2 -1.385353 0.328414 -1.397064 -1.315444\n", "3 -1.506521 0.098217 -1.283389 -1.315444\n", "4 -1.021849 1.249201 -1.340227 -1.315444" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 標準化\n", "stdsc = StandardScaler()\n", "iris_dataset_std = stdsc.fit_transform(iris_dataset.data)\n", "dfs = pd.DataFrame(iris_dataset_std, columns=iris_dataset.feature_names)\n", "dfs.head()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 主成分分析" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# 主成分分析する\n", "pca = PCA()\n", "feature = pca.fit(dfs)\n", "\n", "# 分析結果を元にデータセットを主成分に変換する\n", "transformed = pca.fit_transform(features)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PC1PC2PC3PC4
0-2.6841260.319397-0.027915-0.002262
1-2.714142-0.177001-0.210464-0.099027
2-2.888991-0.1449490.017900-0.019968
3-2.745343-0.3182990.0315590.075576
4-2.7287170.3267550.0900790.061259
\n", "
" ], "text/plain": [ " PC1 PC2 PC3 PC4\n", "0 -2.684126 0.319397 -0.027915 -0.002262\n", "1 -2.714142 -0.177001 -0.210464 -0.099027\n", "2 -2.888991 -0.144949 0.017900 -0.019968\n", "3 -2.745343 -0.318299 0.031559 0.075576\n", "4 -2.728717 0.326755 0.090079 0.061259" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#主成分得点\n", "pd.DataFrame(transformed, columns=[\"PC{}\".format(x + 1) for x in range(len(dfs.columns))]).head()" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 第一主成分と第二主成分でプロットする\n", "plt.scatter(transformed[:, 0], transformed[:, 1], alpha=0.8, c=list(dfs.iloc[:, 0]))\n", " \n", "# グラフを表示する\n", "plt.title('principal component')\n", "plt.xlabel('pc1')\n", "plt.ylabel('pc2')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* 4つの特徴量からなるデータを2次元に次元削減し、平面上にプロットしています。\n", "* 色の違いは品種の違いを意味します。\n", "* 第一主成分(pc1)を x軸\n", "* 第二主成分(pc2)を y軸\n", "\n", "結果、第二主成分(PC2)までで、3品種の区別ができそうなことがわかります。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 寄与率と累積寄与率の確認" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
PC10.924619
PC20.053066
PC30.017103
PC40.005212
\n", "
" ], "text/plain": [ " 0\n", "PC1 0.924619\n", "PC2 0.053066\n", "PC3 0.017103\n", "PC4 0.005212" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#寄与率\n", "pd.DataFrame(pca.explained_variance_ratio_, index=[\"PC{}\".format(x + 1) for x in range(len(dfs.columns))])" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 累積寄与率の視覚化\n", "import matplotlib.ticker as ticker\n", "plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))\n", "plt.plot([0] + list( np.cumsum(pca.explained_variance_ratio_)), \"-o\")\n", "plt.xlabel(\"Number of principal components\")\n", "plt.ylabel(\"Cumulative contribution rate\")\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "結果、第二主成分(PC2)までで元のデータの 97% が表現できていることがわかります。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 固有値と固有ベクトルの確認" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
PC14.228242
PC20.242671
PC30.078210
PC40.023835
\n", "
" ], "text/plain": [ " 0\n", "PC1 4.228242\n", "PC2 0.242671\n", "PC3 0.078210\n", "PC4 0.023835" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 各主成分 の固有値\n", "pd.DataFrame(pca.explained_variance_, index=[\"PC{}\".format(x + 1) for x in range(len(dfs.columns))])" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123
PC10.361387-0.0845230.8566710.358289
PC20.6565890.730161-0.173373-0.075481
PC3-0.5820300.5979110.0762360.545831
PC4-0.3154870.3197230.479839-0.753657
\n", "
" ], "text/plain": [ " 0 1 2 3\n", "PC1 0.361387 -0.084523 0.856671 0.358289\n", "PC2 0.656589 0.730161 -0.173373 -0.075481\n", "PC3 -0.582030 0.597911 0.076236 0.545831\n", "PC4 -0.315487 0.319723 0.479839 -0.753657" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 各主成分の固有ベクトル\n", "pd.DataFrame(pca.components_, index=[\"PC{}\".format(x + 1) for x in range(len(dfs.columns))])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 観測変数の寄与度" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "image/png": "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3/3ud5u1DxGRMCgoGykc1ItiotcqD9T15LPFT3L3mP4UDuoVdmkJde3atcWnGBs4cCADBw5s9n7q794VEWlrFJRNKBzUq00Eo4iIpJ5u5hEREQmgoBQREQmgoBQREQmgoBQREQmgoBRpQyKRCJ/5zGfO+X0HDx5k0qRJTW4rLCxsuFta85aKnElBKZIBLrnkkqQeoah5S0XOpKAUaUHvv/8+t956K8OGDWPo0KE8/fTTwNnnFr3//vu5//77GTVqFEOHDm2Yr3PDhg2MGjWKq666ilGjRrFz587Az73lllvYsmULAFdddRXFxdHH+D/wwAM89thjHzo6rKmpYcqUKQ3zltY/ED+MeUtnz56teUul1VNQirSgP/zhD1xyySVs3ryZbdu2MWHChIRzi77//vusX7+epUuXMmPGDAAGDRrE2rVreeONNyguLuab3/xm4OeOGTOGdevW8d5779GxY0deeeUVIDr12ujRoz809tFHHyUnJ4ctW7awYMGCUOctffTRRzVvqbR6euCASAuon8N0164qdj7ze6r8XuZMn8zo0aPZtm1b4Nyid955JxANu/fee4933nmH48ePM336dHbv3o2ZJZz5ZfTo0SxZsoR+/fpx66238sc//pHq6moqKysZOHDgh+YbXbt2Lffddx8AeXl5oc5bWltbq3lLpdVTUIo0U/wcphf/bX/O/8rPeKPiNebc/zX+/rZbueOOOwLnFjWzM14/8MADjBs3jmeeeYbKykoKCwsDaxgxYgRlZWX079+f8ePH89Zbb/Hzn//8Q0d6QZ95Nqmet7S2tlbzlkqrp1OvIs0UP4fpyffe5oLzz+fSETdy4TWf4/XXX084t2j9dcyXX36Z7t270717d959910uvfRSAFasWJGwhqysLPr06cPq1au59tprGT16NA8//PAZp10heuRaf2p127ZtDdc2QfOWijRFQSnSTPFzmL53cC8v/3MRZT+ayabf/YJvfetbCecW7dGjB6NGjWLWrFk8/vjjAHz961/nG9/4Bp/61Kc4ffp0UnWMHj2a3NxccnJyGD16NAcOHGgyKGfPnk1VVRV5eXksWrSIkSNHNmzTvKUiZ7KgUyVtUUFBgbf0DBqpFolEEp5aa8/aev93Ln+Nw8dPkJP1P1cyqk/V0atrF54sujbwvfn5+Tz22GMUFBSkusyUuuOOO1i0aNE5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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 第一主成分と第二主成分における観測変数の寄与度をプロット\n", "for x, y, name in zip(pca.components_[0], pca.components_[1], dfs.columns[1:]):\n", " plt.text(x, y, name)\n", "plt.scatter(pca.components_[0], pca.components_[1], alpha=0.8)\n", "plt.xlabel(\"PC1\")\n", "plt.ylabel(\"PC2\")\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "各成分が何を考慮した値なのかのヒントが得られます。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }