diff --git a/.ipynb_checkpoints/Solutions-checkpoint.ipynb b/.ipynb_checkpoints/Solutions-checkpoint.ipynb
new file mode 100644
index 0000000..486708c
--- /dev/null
+++ b/.ipynb_checkpoints/Solutions-checkpoint.ipynb
@@ -0,0 +1,173 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Lab | Inferential statistics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- It is assumed that the mean systolic blood pressure is `μ = 120 mm Hg`. In the Honolulu Heart Study, a sample of `n = 100` people had an average systolic blood pressure of 130.1 mm Hg with a standard deviation of 21.21 mm Hg. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Is the group significantly different (with respect to systolic blood pressure!) from the regular population?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 1.1 Set up the hypothesis test."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "H0 = 120\n",
+ "HA =! 120"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 1.2 Write down all the steps followed for setting up the test."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import math\n",
+ "\n",
+ "sample_mean = 130.1\n",
+ "pop_mean = 120\n",
+ "sample_std = 21.21\n",
+ "n = 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from scipy.stats import ttest_ind, norm\n",
+ "sample = norm.rvs(loc=sample_mean, scale=sample_std, size=n)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([125.87272186, 147.33041173, 148.31785028, 112.04380437,\n",
+ " 109.29670776, 142.88049757, 89.87184986, 144.59255735,\n",
+ " 143.98751965, 164.13942162, 150.14885634, 148.8038505 ,\n",
+ " 128.61028065, 97.73265084, 138.41288628, 148.81005023,\n",
+ " 89.80889773, 155.34525738, 94.20433297, 118.01147848,\n",
+ " 140.33613584, 98.86538375, 120.84419938, 125.50754501,\n",
+ " 169.98167304, 141.64637665, 122.23356583, 118.33330743,\n",
+ " 136.95867209, 138.49118087, 156.95988839, 98.2508438 ,\n",
+ " 105.38052451, 136.69245243, 127.63471356, 121.13244895,\n",
+ " 123.20426934, 130.25377353, 139.0563798 , 92.73221543,\n",
+ " 116.59123023, 131.78706465, 160.76714288, 150.08038636,\n",
+ " 138.16101622, 147.63416238, 115.39205312, 154.02299445,\n",
+ " 71.19098511, 167.47047571, 131.10517644, 113.06360969,\n",
+ " 143.55792341, 132.26443597, 82.90132016, 120.84780507,\n",
+ " 134.02454364, 98.29619475, 126.99829157, 144.19791731,\n",
+ " 145.6729652 , 148.25716342, 123.13796532, 99.30986144,\n",
+ " 156.64771966, 137.99025548, 116.97487254, 130.85454744,\n",
+ " 138.81399206, 127.17536482, 140.91634457, 109.51305907,\n",
+ " 145.28927328, 152.36994104, 115.37969632, 121.37670788,\n",
+ " 152.46644509, 136.32657518, 153.70028065, 116.50992758,\n",
+ " 139.82744355, 145.91862428, 101.27965477, 134.87463457,\n",
+ " 114.09559859, 152.65867141, 128.41457124, 128.41892265,\n",
+ " 136.86075007, 153.13865868, 141.7593169 , 110.19926965,\n",
+ " 120.78665058, 106.86669336, 114.7615379 , 125.5866693 ,\n",
+ " 132.16603016, 103.11045235, 80.66212071, 125.76824276])"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 1.3 Calculate the test statistic by hand and also code it in Python. It should be 4.76190. We will take a look at how to make decisions based on this calculated value."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "4.761904761904759"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "statistic = (sample_mean - pop_mean)/(sample_std/math.sqrt(n))\n",
+ "statistic"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. If you finished the previous question, please go through the code for principal_component_analysis_example provided in the files_for_lab folder ."
+ ]
+ }
+ ],
+ "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.8.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Solutions.ipynb b/Solutions.ipynb
index b3e2431..486708c 100644
--- a/Solutions.ipynb
+++ b/Solutions.ipynb
@@ -2,7 +2,6 @@
"cells": [
{
"cell_type": "markdown",
- "id": "e00a11f1",
"metadata": {},
"source": [
"# Lab | Inferential statistics"
@@ -10,7 +9,6 @@
},
{
"cell_type": "markdown",
- "id": "2c813f0a",
"metadata": {},
"source": [
"- It is assumed that the mean systolic blood pressure is `μ = 120 mm Hg`. In the Honolulu Heart Study, a sample of `n = 100` people had an average systolic blood pressure of 130.1 mm Hg with a standard deviation of 21.21 mm Hg. "
@@ -18,7 +16,6 @@
},
{
"cell_type": "markdown",
- "id": "120875d3",
"metadata": {},
"source": [
"## 1. Is the group significantly different (with respect to systolic blood pressure!) from the regular population?"
@@ -26,7 +23,6 @@
},
{
"cell_type": "markdown",
- "id": "d26c43d4",
"metadata": {},
"source": [
"### 1.1 Set up the hypothesis test."
@@ -35,14 +31,15 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "39c6f717",
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "H0 = 120\n",
+ "HA =! 120"
+ ]
},
{
"cell_type": "markdown",
- "id": "17c9988a",
"metadata": {},
"source": [
"### 1.2 Write down all the steps followed for setting up the test."
@@ -50,15 +47,74 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "b09ce149",
+ "execution_count": 3,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "import math\n",
+ "\n",
+ "sample_mean = 130.1\n",
+ "pop_mean = 120\n",
+ "sample_std = 21.21\n",
+ "n = 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from scipy.stats import ttest_ind, norm\n",
+ "sample = norm.rvs(loc=sample_mean, scale=sample_std, size=n)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([125.87272186, 147.33041173, 148.31785028, 112.04380437,\n",
+ " 109.29670776, 142.88049757, 89.87184986, 144.59255735,\n",
+ " 143.98751965, 164.13942162, 150.14885634, 148.8038505 ,\n",
+ " 128.61028065, 97.73265084, 138.41288628, 148.81005023,\n",
+ " 89.80889773, 155.34525738, 94.20433297, 118.01147848,\n",
+ " 140.33613584, 98.86538375, 120.84419938, 125.50754501,\n",
+ " 169.98167304, 141.64637665, 122.23356583, 118.33330743,\n",
+ " 136.95867209, 138.49118087, 156.95988839, 98.2508438 ,\n",
+ " 105.38052451, 136.69245243, 127.63471356, 121.13244895,\n",
+ " 123.20426934, 130.25377353, 139.0563798 , 92.73221543,\n",
+ " 116.59123023, 131.78706465, 160.76714288, 150.08038636,\n",
+ " 138.16101622, 147.63416238, 115.39205312, 154.02299445,\n",
+ " 71.19098511, 167.47047571, 131.10517644, 113.06360969,\n",
+ " 143.55792341, 132.26443597, 82.90132016, 120.84780507,\n",
+ " 134.02454364, 98.29619475, 126.99829157, 144.19791731,\n",
+ " 145.6729652 , 148.25716342, 123.13796532, 99.30986144,\n",
+ " 156.64771966, 137.99025548, 116.97487254, 130.85454744,\n",
+ " 138.81399206, 127.17536482, 140.91634457, 109.51305907,\n",
+ " 145.28927328, 152.36994104, 115.37969632, 121.37670788,\n",
+ " 152.46644509, 136.32657518, 153.70028065, 116.50992758,\n",
+ " 139.82744355, 145.91862428, 101.27965477, 134.87463457,\n",
+ " 114.09559859, 152.65867141, 128.41457124, 128.41892265,\n",
+ " 136.86075007, 153.13865868, 141.7593169 , 110.19926965,\n",
+ " 120.78665058, 106.86669336, 114.7615379 , 125.5866693 ,\n",
+ " 132.16603016, 103.11045235, 80.66212071, 125.76824276])"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sample"
+ ]
},
{
"cell_type": "markdown",
- "id": "63df3700",
"metadata": {},
"source": [
"### 1.3 Calculate the test statistic by hand and also code it in Python. It should be 4.76190. We will take a look at how to make decisions based on this calculated value."
@@ -66,15 +122,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "97f73e20",
+ "execution_count": 4,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "4.761904761904759"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "statistic = (sample_mean - pop_mean)/(sample_std/math.sqrt(n))\n",
+ "statistic"
+ ]
},
{
"cell_type": "markdown",
- "id": "4a7564e5",
"metadata": {},
"source": [
"## 2. If you finished the previous question, please go through the code for principal_component_analysis_example provided in the files_for_lab folder ."
diff --git a/files_for_lab/principal_component_analysis_example/.ipynb_checkpoints/pca-principal-component-analysis-checkpoint.ipynb b/files_for_lab/principal_component_analysis_example/.ipynb_checkpoints/pca-principal-component-analysis-checkpoint.ipynb
new file mode 100644
index 0000000..5021fe0
--- /dev/null
+++ b/files_for_lab/principal_component_analysis_example/.ipynb_checkpoints/pca-principal-component-analysis-checkpoint.ipynb
@@ -0,0 +1,1170 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "\n",
+ "import seaborn as sns\n",
+ "import matplotlib.pyplot as plt\n",
+ "%matplotlib inline \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 6 | \n",
+ " 7 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " ... | \n",
+ " 25 | \n",
+ " 26 | \n",
+ " 27 | \n",
+ " 28 | \n",
+ " 29 | \n",
+ " 30 | \n",
+ " 31 | \n",
+ " 32 | \n",
+ " 33 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 119513 | \n",
+ " N | \n",
+ " 31 | \n",
+ " 18.02 | \n",
+ " 27.60 | \n",
+ " 117.50 | \n",
+ " 1013.0 | \n",
+ " 0.09489 | \n",
+ " 0.1036 | \n",
+ " 0.1086 | \n",
+ " ... | \n",
+ " 139.70 | \n",
+ " 1436.0 | \n",
+ " 0.1195 | \n",
+ " 0.1926 | \n",
+ " 0.3140 | \n",
+ " 0.1170 | \n",
+ " 0.2677 | \n",
+ " 0.08113 | \n",
+ " 5.0 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 8423 | \n",
+ " N | \n",
+ " 61 | \n",
+ " 17.99 | \n",
+ " 10.38 | \n",
+ " 122.80 | \n",
+ " 1001.0 | \n",
+ " 0.11840 | \n",
+ " 0.2776 | \n",
+ " 0.3001 | \n",
+ " ... | \n",
+ " 184.60 | \n",
+ " 2019.0 | \n",
+ " 0.1622 | \n",
+ " 0.6656 | \n",
+ " 0.7119 | \n",
+ " 0.2654 | \n",
+ " 0.4601 | \n",
+ " 0.11890 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 842517 | \n",
+ " N | \n",
+ " 116 | \n",
+ " 21.37 | \n",
+ " 17.44 | \n",
+ " 137.50 | \n",
+ " 1373.0 | \n",
+ " 0.08836 | \n",
+ " 0.1189 | \n",
+ " 0.1255 | \n",
+ " ... | \n",
+ " 159.10 | \n",
+ " 1949.0 | \n",
+ " 0.1188 | \n",
+ " 0.3449 | \n",
+ " 0.3414 | \n",
+ " 0.2032 | \n",
+ " 0.4334 | \n",
+ " 0.09067 | \n",
+ " 2.5 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 843483 | \n",
+ " N | \n",
+ " 123 | \n",
+ " 11.42 | \n",
+ " 20.38 | \n",
+ " 77.58 | \n",
+ " 386.1 | \n",
+ " 0.14250 | \n",
+ " 0.2839 | \n",
+ " 0.2414 | \n",
+ " ... | \n",
+ " 98.87 | \n",
+ " 567.7 | \n",
+ " 0.2098 | \n",
+ " 0.8663 | \n",
+ " 0.6869 | \n",
+ " 0.2575 | \n",
+ " 0.6638 | \n",
+ " 0.17300 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 843584 | \n",
+ " R | \n",
+ " 27 | \n",
+ " 20.29 | \n",
+ " 14.34 | \n",
+ " 135.10 | \n",
+ " 1297.0 | \n",
+ " 0.10030 | \n",
+ " 0.1328 | \n",
+ " 0.1980 | \n",
+ " ... | \n",
+ " 152.20 | \n",
+ " 1575.0 | \n",
+ " 0.1374 | \n",
+ " 0.2050 | \n",
+ " 0.4000 | \n",
+ " 0.1625 | \n",
+ " 0.2364 | \n",
+ " 0.07678 | \n",
+ " 3.5 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 35 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4 5 6 7 8 9 ... \\\n",
+ "0 119513 N 31 18.02 27.60 117.50 1013.0 0.09489 0.1036 0.1086 ... \n",
+ "1 8423 N 61 17.99 10.38 122.80 1001.0 0.11840 0.2776 0.3001 ... \n",
+ "2 842517 N 116 21.37 17.44 137.50 1373.0 0.08836 0.1189 0.1255 ... \n",
+ "3 843483 N 123 11.42 20.38 77.58 386.1 0.14250 0.2839 0.2414 ... \n",
+ "4 843584 R 27 20.29 14.34 135.10 1297.0 0.10030 0.1328 0.1980 ... \n",
+ "\n",
+ " 25 26 27 28 29 30 31 32 33 34 \n",
+ "0 139.70 1436.0 0.1195 0.1926 0.3140 0.1170 0.2677 0.08113 5.0 5 \n",
+ "1 184.60 2019.0 0.1622 0.6656 0.7119 0.2654 0.4601 0.11890 3.0 2 \n",
+ "2 159.10 1949.0 0.1188 0.3449 0.3414 0.2032 0.4334 0.09067 2.5 0 \n",
+ "3 98.87 567.7 0.2098 0.8663 0.6869 0.2575 0.6638 0.17300 2.0 0 \n",
+ "4 152.20 1575.0 0.1374 0.2050 0.4000 0.1625 0.2364 0.07678 3.5 0 \n",
+ "\n",
+ "[5 rows x 35 columns]"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "breast_cancer = pd.read_csv('breast-cancer.csv', header=None)\n",
+ "breast_cancer.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "total_cols = ['id', 'outcome', 'time', 'cell_1_radius', 'cell_1_texture', 'cell_1_perimiter',\n",
+ " 'cell_1_area', 'cell_1_smoothness', 'cell_1_compactness', 'cell_1_concavity',\n",
+ " 'cell_1_concave_points', 'cell_1_symmetry', 'cell_1_fractal_dimension',\n",
+ " 'cell_2_radius', 'cell_2_texture', 'cell_2_perimiter', 'cell_2_area',\n",
+ " 'cell_2_smoothness', 'cell_2_compactness', 'cell_2_concavity',\n",
+ " 'cell_2_concave_points', 'cell_2_symmetry', 'cell_2_fractal_dimension', 'cell_3_radius', \n",
+ " 'cell_3_texture', 'cell_3_perimiter', 'cell_3_area', 'cell_3_smoothness',\n",
+ " 'cell_3_compactness', 'cell_3_concavity', 'cell_3_concave_points', 'cell_3_symmetry',\n",
+ " 'cell_3_fractal_dimension', 'tumor_size', 'lymph_status']\n",
+ "breast_cancer.columns = total_cols"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " outcome | \n",
+ " time | \n",
+ " cell_1_radius | \n",
+ " cell_1_texture | \n",
+ " cell_1_perimiter | \n",
+ " cell_1_area | \n",
+ " cell_1_smoothness | \n",
+ " cell_1_compactness | \n",
+ " cell_1_concavity | \n",
+ " ... | \n",
+ " cell_3_perimiter | \n",
+ " cell_3_area | \n",
+ " cell_3_smoothness | \n",
+ " cell_3_compactness | \n",
+ " cell_3_concavity | \n",
+ " cell_3_concave_points | \n",
+ " cell_3_symmetry | \n",
+ " cell_3_fractal_dimension | \n",
+ " tumor_size | \n",
+ " lymph_status | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 119513 | \n",
+ " N | \n",
+ " 31 | \n",
+ " 18.02 | \n",
+ " 27.60 | \n",
+ " 117.50 | \n",
+ " 1013.0 | \n",
+ " 0.09489 | \n",
+ " 0.1036 | \n",
+ " 0.1086 | \n",
+ " ... | \n",
+ " 139.70 | \n",
+ " 1436.0 | \n",
+ " 0.1195 | \n",
+ " 0.1926 | \n",
+ " 0.3140 | \n",
+ " 0.1170 | \n",
+ " 0.2677 | \n",
+ " 0.08113 | \n",
+ " 5.0 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 8423 | \n",
+ " N | \n",
+ " 61 | \n",
+ " 17.99 | \n",
+ " 10.38 | \n",
+ " 122.80 | \n",
+ " 1001.0 | \n",
+ " 0.11840 | \n",
+ " 0.2776 | \n",
+ " 0.3001 | \n",
+ " ... | \n",
+ " 184.60 | \n",
+ " 2019.0 | \n",
+ " 0.1622 | \n",
+ " 0.6656 | \n",
+ " 0.7119 | \n",
+ " 0.2654 | \n",
+ " 0.4601 | \n",
+ " 0.11890 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 842517 | \n",
+ " N | \n",
+ " 116 | \n",
+ " 21.37 | \n",
+ " 17.44 | \n",
+ " 137.50 | \n",
+ " 1373.0 | \n",
+ " 0.08836 | \n",
+ " 0.1189 | \n",
+ " 0.1255 | \n",
+ " ... | \n",
+ " 159.10 | \n",
+ " 1949.0 | \n",
+ " 0.1188 | \n",
+ " 0.3449 | \n",
+ " 0.3414 | \n",
+ " 0.2032 | \n",
+ " 0.4334 | \n",
+ " 0.09067 | \n",
+ " 2.5 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 843483 | \n",
+ " N | \n",
+ " 123 | \n",
+ " 11.42 | \n",
+ " 20.38 | \n",
+ " 77.58 | \n",
+ " 386.1 | \n",
+ " 0.14250 | \n",
+ " 0.2839 | \n",
+ " 0.2414 | \n",
+ " ... | \n",
+ " 98.87 | \n",
+ " 567.7 | \n",
+ " 0.2098 | \n",
+ " 0.8663 | \n",
+ " 0.6869 | \n",
+ " 0.2575 | \n",
+ " 0.6638 | \n",
+ " 0.17300 | \n",
+ " 2.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 843584 | \n",
+ " R | \n",
+ " 27 | \n",
+ " 20.29 | \n",
+ " 14.34 | \n",
+ " 135.10 | \n",
+ " 1297.0 | \n",
+ " 0.10030 | \n",
+ " 0.1328 | \n",
+ " 0.1980 | \n",
+ " ... | \n",
+ " 152.20 | \n",
+ " 1575.0 | \n",
+ " 0.1374 | \n",
+ " 0.2050 | \n",
+ " 0.4000 | \n",
+ " 0.1625 | \n",
+ " 0.2364 | \n",
+ " 0.07678 | \n",
+ " 3.5 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 35 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id outcome time cell_1_radius cell_1_texture cell_1_perimiter \\\n",
+ "0 119513 N 31 18.02 27.60 117.50 \n",
+ "1 8423 N 61 17.99 10.38 122.80 \n",
+ "2 842517 N 116 21.37 17.44 137.50 \n",
+ "3 843483 N 123 11.42 20.38 77.58 \n",
+ "4 843584 R 27 20.29 14.34 135.10 \n",
+ "\n",
+ " cell_1_area cell_1_smoothness cell_1_compactness cell_1_concavity ... \\\n",
+ "0 1013.0 0.09489 0.1036 0.1086 ... \n",
+ "1 1001.0 0.11840 0.2776 0.3001 ... \n",
+ "2 1373.0 0.08836 0.1189 0.1255 ... \n",
+ "3 386.1 0.14250 0.2839 0.2414 ... \n",
+ "4 1297.0 0.10030 0.1328 0.1980 ... \n",
+ "\n",
+ " cell_3_perimiter cell_3_area cell_3_smoothness cell_3_compactness \\\n",
+ "0 139.70 1436.0 0.1195 0.1926 \n",
+ "1 184.60 2019.0 0.1622 0.6656 \n",
+ "2 159.10 1949.0 0.1188 0.3449 \n",
+ "3 98.87 567.7 0.2098 0.8663 \n",
+ "4 152.20 1575.0 0.1374 0.2050 \n",
+ "\n",
+ " cell_3_concavity cell_3_concave_points cell_3_symmetry \\\n",
+ "0 0.3140 0.1170 0.2677 \n",
+ "1 0.7119 0.2654 0.4601 \n",
+ "2 0.3414 0.2032 0.4334 \n",
+ "3 0.6869 0.2575 0.6638 \n",
+ "4 0.4000 0.1625 0.2364 \n",
+ "\n",
+ " cell_3_fractal_dimension tumor_size lymph_status \n",
+ "0 0.08113 5.0 5 \n",
+ "1 0.11890 3.0 2 \n",
+ "2 0.09067 2.5 0 \n",
+ "3 0.17300 2.0 0 \n",
+ "4 0.07678 3.5 0 \n",
+ "\n",
+ "[5 rows x 35 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "breast_cancer.head(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# breast_cancer.dtypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "numerics = breast_cancer._get_numeric_data()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " time | \n",
+ " cell_1_radius | \n",
+ " cell_1_texture | \n",
+ " cell_1_perimiter | \n",
+ " cell_1_area | \n",
+ " cell_1_smoothness | \n",
+ " cell_1_compactness | \n",
+ " cell_1_concavity | \n",
+ " cell_1_concave_points | \n",
+ " ... | \n",
+ " cell_3_texture | \n",
+ " cell_3_perimiter | \n",
+ " cell_3_area | \n",
+ " cell_3_smoothness | \n",
+ " cell_3_compactness | \n",
+ " cell_3_concavity | \n",
+ " cell_3_concave_points | \n",
+ " cell_3_symmetry | \n",
+ " cell_3_fractal_dimension | \n",
+ " tumor_size | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 119513 | \n",
+ " 31 | \n",
+ " 18.02 | \n",
+ " 27.60 | \n",
+ " 117.50 | \n",
+ " 1013.0 | \n",
+ " 0.09489 | \n",
+ " 0.1036 | \n",
+ " 0.1086 | \n",
+ " 0.07055 | \n",
+ " ... | \n",
+ " 37.08 | \n",
+ " 139.70 | \n",
+ " 1436.0 | \n",
+ " 0.1195 | \n",
+ " 0.1926 | \n",
+ " 0.3140 | \n",
+ " 0.1170 | \n",
+ " 0.2677 | \n",
+ " 0.08113 | \n",
+ " 5.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 8423 | \n",
+ " 61 | \n",
+ " 17.99 | \n",
+ " 10.38 | \n",
+ " 122.80 | \n",
+ " 1001.0 | \n",
+ " 0.11840 | \n",
+ " 0.2776 | \n",
+ " 0.3001 | \n",
+ " 0.14710 | \n",
+ " ... | \n",
+ " 17.33 | \n",
+ " 184.60 | \n",
+ " 2019.0 | \n",
+ " 0.1622 | \n",
+ " 0.6656 | \n",
+ " 0.7119 | \n",
+ " 0.2654 | \n",
+ " 0.4601 | \n",
+ " 0.11890 | \n",
+ " 3.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 842517 | \n",
+ " 116 | \n",
+ " 21.37 | \n",
+ " 17.44 | \n",
+ " 137.50 | \n",
+ " 1373.0 | \n",
+ " 0.08836 | \n",
+ " 0.1189 | \n",
+ " 0.1255 | \n",
+ " 0.08180 | \n",
+ " ... | \n",
+ " 20.98 | \n",
+ " 159.10 | \n",
+ " 1949.0 | \n",
+ " 0.1188 | \n",
+ " 0.3449 | \n",
+ " 0.3414 | \n",
+ " 0.2032 | \n",
+ " 0.4334 | \n",
+ " 0.09067 | \n",
+ " 2.5 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 843483 | \n",
+ " 123 | \n",
+ " 11.42 | \n",
+ " 20.38 | \n",
+ " 77.58 | \n",
+ " 386.1 | \n",
+ " 0.14250 | \n",
+ " 0.2839 | \n",
+ " 0.2414 | \n",
+ " 0.10520 | \n",
+ " ... | \n",
+ " 26.50 | \n",
+ " 98.87 | \n",
+ " 567.7 | \n",
+ " 0.2098 | \n",
+ " 0.8663 | \n",
+ " 0.6869 | \n",
+ " 0.2575 | \n",
+ " 0.6638 | \n",
+ " 0.17300 | \n",
+ " 2.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 843584 | \n",
+ " 27 | \n",
+ " 20.29 | \n",
+ " 14.34 | \n",
+ " 135.10 | \n",
+ " 1297.0 | \n",
+ " 0.10030 | \n",
+ " 0.1328 | \n",
+ " 0.1980 | \n",
+ " 0.10430 | \n",
+ " ... | \n",
+ " 16.67 | \n",
+ " 152.20 | \n",
+ " 1575.0 | \n",
+ " 0.1374 | \n",
+ " 0.2050 | \n",
+ " 0.4000 | \n",
+ " 0.1625 | \n",
+ " 0.2364 | \n",
+ " 0.07678 | \n",
+ " 3.5 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 33 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id time cell_1_radius cell_1_texture cell_1_perimiter cell_1_area \\\n",
+ "0 119513 31 18.02 27.60 117.50 1013.0 \n",
+ "1 8423 61 17.99 10.38 122.80 1001.0 \n",
+ "2 842517 116 21.37 17.44 137.50 1373.0 \n",
+ "3 843483 123 11.42 20.38 77.58 386.1 \n",
+ "4 843584 27 20.29 14.34 135.10 1297.0 \n",
+ "\n",
+ " cell_1_smoothness cell_1_compactness cell_1_concavity \\\n",
+ "0 0.09489 0.1036 0.1086 \n",
+ "1 0.11840 0.2776 0.3001 \n",
+ "2 0.08836 0.1189 0.1255 \n",
+ "3 0.14250 0.2839 0.2414 \n",
+ "4 0.10030 0.1328 0.1980 \n",
+ "\n",
+ " cell_1_concave_points ... cell_3_texture cell_3_perimiter cell_3_area \\\n",
+ "0 0.07055 ... 37.08 139.70 1436.0 \n",
+ "1 0.14710 ... 17.33 184.60 2019.0 \n",
+ "2 0.08180 ... 20.98 159.10 1949.0 \n",
+ "3 0.10520 ... 26.50 98.87 567.7 \n",
+ "4 0.10430 ... 16.67 152.20 1575.0 \n",
+ "\n",
+ " cell_3_smoothness cell_3_compactness cell_3_concavity \\\n",
+ "0 0.1195 0.1926 0.3140 \n",
+ "1 0.1622 0.6656 0.7119 \n",
+ "2 0.1188 0.3449 0.3414 \n",
+ "3 0.2098 0.8663 0.6869 \n",
+ "4 0.1374 0.2050 0.4000 \n",
+ "\n",
+ " cell_3_concave_points cell_3_symmetry cell_3_fractal_dimension \\\n",
+ "0 0.1170 0.2677 0.08113 \n",
+ "1 0.2654 0.4601 0.11890 \n",
+ "2 0.2032 0.4334 0.09067 \n",
+ "3 0.2575 0.6638 0.17300 \n",
+ "4 0.1625 0.2364 0.07678 \n",
+ "\n",
+ " tumor_size \n",
+ "0 5.0 \n",
+ "1 3.0 \n",
+ "2 2.5 \n",
+ "3 2.0 \n",
+ "4 3.5 \n",
+ "\n",
+ "[5 rows x 33 columns]"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "numerics.head(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "numerics = numerics.drop(['id','time'], axis=1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Before we apply PCA we need to standardize/scale the data. For this we can use sklearn's preprocessing library \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cell_1_radius | \n",
+ " cell_1_texture | \n",
+ " cell_1_perimiter | \n",
+ " cell_1_area | \n",
+ " cell_1_smoothness | \n",
+ " cell_1_compactness | \n",
+ " cell_1_concavity | \n",
+ " cell_1_concave_points | \n",
+ " cell_1_symmetry | \n",
+ " cell_1_fractal_dimension | \n",
+ " ... | \n",
+ " cell_3_texture | \n",
+ " cell_3_perimiter | \n",
+ " cell_3_area | \n",
+ " cell_3_smoothness | \n",
+ " cell_3_compactness | \n",
+ " cell_3_concavity | \n",
+ " cell_3_concave_points | \n",
+ " cell_3_symmetry | \n",
+ " cell_3_fractal_dimension | \n",
+ " tumor_size | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.192688 | \n",
+ " 1.241770 | \n",
+ " 0.123934 | \n",
+ " 0.122300 | \n",
+ " -0.623774 | \n",
+ " -0.784542 | \n",
+ " -0.676803 | \n",
+ " -0.480176 | \n",
+ " -0.228521 | \n",
+ " 0.086480 | \n",
+ " ... | \n",
+ " 1.156324 | \n",
+ " -0.022477 | \n",
+ " 0.053105 | \n",
+ " -1.112648 | \n",
+ " -1.054732 | \n",
+ " -0.708404 | \n",
+ " -1.370815 | \n",
+ " -0.743009 | \n",
+ " -0.459226 | \n",
+ " 1.113530 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.183175 | \n",
+ " -2.774630 | \n",
+ " 0.372418 | \n",
+ " 0.088138 | \n",
+ " 1.258416 | \n",
+ " 2.711439 | \n",
+ " 2.043606 | \n",
+ " 1.785222 | \n",
+ " 1.795777 | \n",
+ " 2.216313 | \n",
+ " ... | \n",
+ " -2.133937 | \n",
+ " 1.535510 | \n",
+ " 1.050496 | \n",
+ " 0.832831 | \n",
+ " 1.837343 | \n",
+ " 1.589132 | \n",
+ " 1.922113 | \n",
+ " 1.823321 | \n",
+ " 1.329259 | \n",
+ " 0.078903 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1.254939 | \n",
+ " -1.127953 | \n",
+ " 1.061610 | \n",
+ " 1.147186 | \n",
+ " -1.146560 | \n",
+ " -0.477137 | \n",
+ " -0.436726 | \n",
+ " -0.147247 | \n",
+ " 1.481536 | \n",
+ " -0.360812 | \n",
+ " ... | \n",
+ " -1.525864 | \n",
+ " 0.650684 | \n",
+ " 0.930741 | \n",
+ " -1.144541 | \n",
+ " -0.123520 | \n",
+ " -0.550192 | \n",
+ " 0.541923 | \n",
+ " 1.467183 | \n",
+ " -0.007488 | \n",
+ " -0.179753 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " -1.900104 | \n",
+ " -0.442226 | \n",
+ " -1.747667 | \n",
+ " -1.662423 | \n",
+ " 3.187841 | \n",
+ " 2.838018 | \n",
+ " 1.209726 | \n",
+ " 0.545246 | \n",
+ " 2.446183 | \n",
+ " 4.810056 | \n",
+ " ... | \n",
+ " -0.606256 | \n",
+ " -1.439240 | \n",
+ " -1.432374 | \n",
+ " 3.001561 | \n",
+ " 3.064487 | \n",
+ " 1.444778 | \n",
+ " 1.746815 | \n",
+ " 4.540377 | \n",
+ " 3.891002 | \n",
+ " -0.438410 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.912482 | \n",
+ " -1.850998 | \n",
+ " 0.949089 | \n",
+ " 0.930821 | \n",
+ " -0.190654 | \n",
+ " -0.197860 | \n",
+ " 0.593194 | \n",
+ " 0.518612 | \n",
+ " -0.433143 | \n",
+ " -0.536682 | \n",
+ " ... | \n",
+ " -2.243890 | \n",
+ " 0.411261 | \n",
+ " 0.290905 | \n",
+ " -0.297096 | \n",
+ " -0.978914 | \n",
+ " -0.211827 | \n",
+ " -0.361191 | \n",
+ " -1.160505 | \n",
+ " -0.665207 | \n",
+ " 0.337560 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 31 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " cell_1_radius cell_1_texture cell_1_perimiter cell_1_area \\\n",
+ "0 0.192688 1.241770 0.123934 0.122300 \n",
+ "1 0.183175 -2.774630 0.372418 0.088138 \n",
+ "2 1.254939 -1.127953 1.061610 1.147186 \n",
+ "3 -1.900104 -0.442226 -1.747667 -1.662423 \n",
+ "4 0.912482 -1.850998 0.949089 0.930821 \n",
+ "\n",
+ " cell_1_smoothness cell_1_compactness cell_1_concavity \\\n",
+ "0 -0.623774 -0.784542 -0.676803 \n",
+ "1 1.258416 2.711439 2.043606 \n",
+ "2 -1.146560 -0.477137 -0.436726 \n",
+ "3 3.187841 2.838018 1.209726 \n",
+ "4 -0.190654 -0.197860 0.593194 \n",
+ "\n",
+ " cell_1_concave_points cell_1_symmetry cell_1_fractal_dimension ... \\\n",
+ "0 -0.480176 -0.228521 0.086480 ... \n",
+ "1 1.785222 1.795777 2.216313 ... \n",
+ "2 -0.147247 1.481536 -0.360812 ... \n",
+ "3 0.545246 2.446183 4.810056 ... \n",
+ "4 0.518612 -0.433143 -0.536682 ... \n",
+ "\n",
+ " cell_3_texture cell_3_perimiter cell_3_area cell_3_smoothness \\\n",
+ "0 1.156324 -0.022477 0.053105 -1.112648 \n",
+ "1 -2.133937 1.535510 1.050496 0.832831 \n",
+ "2 -1.525864 0.650684 0.930741 -1.144541 \n",
+ "3 -0.606256 -1.439240 -1.432374 3.001561 \n",
+ "4 -2.243890 0.411261 0.290905 -0.297096 \n",
+ "\n",
+ " cell_3_compactness cell_3_concavity cell_3_concave_points \\\n",
+ "0 -1.054732 -0.708404 -1.370815 \n",
+ "1 1.837343 1.589132 1.922113 \n",
+ "2 -0.123520 -0.550192 0.541923 \n",
+ "3 3.064487 1.444778 1.746815 \n",
+ "4 -0.978914 -0.211827 -0.361191 \n",
+ "\n",
+ " cell_3_symmetry cell_3_fractal_dimension tumor_size \n",
+ "0 -0.743009 -0.459226 1.113530 \n",
+ "1 1.823321 1.329259 0.078903 \n",
+ "2 1.467183 -0.007488 -0.179753 \n",
+ "3 4.540377 3.891002 -0.438410 \n",
+ "4 -1.160505 -0.665207 0.337560 \n",
+ "\n",
+ "[5 rows x 31 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from sklearn.preprocessing import StandardScaler\n",
+ "transformer = StandardScaler().fit(numerics)\n",
+ "scaled = transformer.transform(numerics)\n",
+ "scaled = pd.DataFrame(scaled)\n",
+ "scaled.columns = numerics.columns \n",
+ "scaled.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.decomposition import PCA\n",
+ "from sklearn import preprocessing\n",
+ "pca = PCA()\n",
+ "pca.fit(scaled)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# pca.components_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([31.6, 26.5, 10.8, 7.2, 4.6, 4. , 3.2, 2.9, 1.9, 1.5, 1.2,\n",
+ " 1.1, 0.8, 0.7, 0.4, 0.3, 0.3, 0.2, 0.2, 0.2, 0.1, 0.1,\n",
+ " 0.1, 0.1, 0.1, 0. , 0. , 0. , 0. , 0. , 0. ])"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# variations = pca.explained_variance_\n",
+ "variations = pca.explained_variance_ratio_*100\n",
+ "variations = np.round(variations, decimals=1)\n",
+ "variations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "plot_labels = ['PC'+str(i) for i in range(1,len(variations)+1)]\n",
+ "?plot_labels"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'PCA Scree Plot')"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from matplotlib.pyplot import figure\n",
+ "figure(figsize=(20,5))\n",
+ "plt.bar(x = plot_labels, height=variations)\n",
+ "plt.xlabel('Principal Components')\n",
+ "plt.ylabel('Variance Explained')\n",
+ "plt.title('PCA Scree Plot')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " PC1 | \n",
+ " PC2 | \n",
+ " PC3 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.212947 | \n",
+ " 0.017315 | \n",
+ " 0.229033 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " -0.235699 | \n",
+ " -0.058704 | \n",
+ " -0.217823 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " -0.085063 | \n",
+ " 0.063490 | \n",
+ " -0.085697 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.012836 | \n",
+ " 0.601037 | \n",
+ " 0.017419 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.049309 | \n",
+ " 0.119550 | \n",
+ " 0.037690 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PC1 PC2 PC3\n",
+ "0 0.212947 0.017315 0.229033\n",
+ "1 -0.235699 -0.058704 -0.217823\n",
+ "2 -0.085063 0.063490 -0.085697\n",
+ "3 0.012836 0.601037 0.017419\n",
+ "4 0.049309 0.119550 0.037690"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data = pd.DataFrame(pca.components_)\n",
+ "data = data[[0,1,2]]\n",
+ "data.columns = ['PC1', 'PC2', 'PC3']\n",
+ "data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "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.8.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/files_for_lab/principal_component_analysis_example/pca-principal-component-analysis.ipynb b/files_for_lab/principal_component_analysis_example/pca-principal-component-analysis.ipynb
index 452cf3e..5021fe0 100644
--- a/files_for_lab/principal_component_analysis_example/pca-principal-component-analysis.ipynb
+++ b/files_for_lab/principal_component_analysis_example/pca-principal-component-analysis.ipynb
@@ -1162,7 +1162,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.7.3"
+ "version": "3.8.5"
}
},
"nbformat": 4,