Skip to content

Instantly share code, notes, and snippets.

@georgehc
Last active January 24, 2018 20:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save georgehc/4100f748246872b4eddeff9b82212d89 to your computer and use it in GitHub Desktop.
Save georgehc/4100f748246872b4eddeff9b82212d89 to your computer and use it in GitHub Desktop.
95-865 PCA demo
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This demo is based on Mark Richardson's 2009 \"Principle Component Analysis\" notes and uses data he pulled from DEFRA on 1997 UK food consumption (grams/person/week). This dataset is also used as a nice illustrated example of PCA here:\n",
"http://setosa.io/ev/principal-component-analysis/"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" England Wales Scotland N Ireland\n",
"Cheese 105 103 103 66\n",
"Carcass meat 245 227 242 267\n",
"Other meat 685 803 750 586\n",
"Fish 147 160 122 93\n",
"Fats and oils 193 235 184 209\n",
"Sugars 156 175 147 139\n",
"Fresh potatoes 720 874 566 1033\n",
"Fresh Veg 253 265 171 143\n",
"Other Veg 488 570 418 355\n",
"Processed potatoes 198 203 220 187\n",
"Processed Veg 360 365 337 334\n",
"Fresh fruit 1102 1137 957 674\n",
"Cereals 1472 1582 1462 1494\n",
"Beverages 57 73 53 47\n",
"Soft drinks 1374 1256 1572 1506\n",
"Alcoholic drinks 375 475 458 135\n",
"Confectionary 54 64 62 41\n"
]
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('ggplot') # prettier plots\n",
"import numpy as np\n",
"\n",
"food_data = np.array([[105, 103, 103, 66],\n",
" [245, 227, 242, 267],\n",
" [685, 803, 750, 586],\n",
" [147, 160, 122, 93],\n",
" [193, 235, 184, 209], \n",
" [156, 175, 147, 139],\n",
" [720, 874, 566, 1033],\n",
" [253, 265, 171, 143],\n",
" [488, 570, 418, 355],\n",
" [198, 203, 220, 187],\n",
" [360, 365, 337, 334],\n",
" [1102, 1137, 957, 674],\n",
" [1472, 1582, 1462, 1494],\n",
" [57, 73, 53, 47],\n",
" [1374, 1256, 1572, 1506],\n",
" [375, 475, 458, 135],\n",
" [54, 64, 62, 41]])\n",
"row_labels = ['Cheese',\n",
" 'Carcass meat',\n",
" 'Other meat',\n",
" 'Fish',\n",
" 'Fats and oils',\n",
" 'Sugars',\n",
" 'Fresh potatoes',\n",
" 'Fresh Veg',\n",
" 'Other Veg',\n",
" 'Processed potatoes',\n",
" 'Processed Veg',\n",
" 'Fresh fruit',\n",
" 'Cereals',\n",
" 'Beverages',\n",
" 'Soft drinks',\n",
" 'Alcoholic drinks',\n",
" 'Confectionary']\n",
"column_labels = ['England', 'Wales', 'Scotland', 'N Ireland']\n",
"\n",
"first_column_width = 20\n",
"other_columns_width = 15\n",
"\n",
"# print header\n",
"print(\"\".ljust(first_column_width), end='')\n",
"for column_label in column_labels:\n",
" print(column_label.rjust(other_columns_width), end='')\n",
"print()\n",
"\n",
"# print each row in the numpy array with a column label\n",
"for row_label, row in zip(row_labels, food_data):\n",
" print(row_label.ljust(first_column_width), end='')\n",
" print(\"\".join([(\"%d\" % x).rjust(other_columns_width) for x in row]))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([<matplotlib.axis.XTick at 0x1099d5080>,\n",
" <matplotlib.axis.XTick at 0x1099dccf8>,\n",
" <matplotlib.axis.XTick at 0x10ba9d668>,\n",
" <matplotlib.axis.XTick at 0x110ac66d8>,\n",
" <matplotlib.axis.XTick at 0x110ac6d30>,\n",
" <matplotlib.axis.XTick at 0x110ad4438>,\n",
" <matplotlib.axis.XTick at 0x110ad4b00>,\n",
" <matplotlib.axis.XTick at 0x110ad9208>,\n",
" <matplotlib.axis.XTick at 0x110ad98d0>,\n",
" <matplotlib.axis.XTick at 0x110ad9f98>,\n",
" <matplotlib.axis.XTick at 0x110adf6a0>,\n",
" <matplotlib.axis.XTick at 0x110adfd68>,\n",
" <matplotlib.axis.XTick at 0x110ae6470>,\n",
" <matplotlib.axis.XTick at 0x110ae6b38>,\n",
" <matplotlib.axis.XTick at 0x110aeb240>,\n",
" <matplotlib.axis.XTick at 0x110aeb908>,\n",
" <matplotlib.axis.XTick at 0x110aebfd0>],\n",
" <a list of 17 Text xticklabel objects>)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1099b27b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.bar(range(len(row_labels)), food_data[:, 0])\n",
"plt.xticks(range(len(row_labels)), row_labels, rotation=90)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([<matplotlib.axis.XTick at 0x1099b2c18>,\n",
" <matplotlib.axis.XTick at 0x1099b2ba8>,\n",
" <matplotlib.axis.XTick at 0x113decb70>,\n",
" <matplotlib.axis.XTick at 0x113eadcf8>,\n",
" <matplotlib.axis.XTick at 0x113eb5400>,\n",
" <matplotlib.axis.XTick at 0x113eb5ac8>,\n",
" <matplotlib.axis.XTick at 0x113eba1d0>,\n",
" <matplotlib.axis.XTick at 0x113eba898>,\n",
" <matplotlib.axis.XTick at 0x113ebaf60>,\n",
" <matplotlib.axis.XTick at 0x113ec0668>,\n",
" <matplotlib.axis.XTick at 0x113ec0d30>,\n",
" <matplotlib.axis.XTick at 0x113ec7438>,\n",
" <matplotlib.axis.XTick at 0x113ec7b00>,\n",
" <matplotlib.axis.XTick at 0x113ecd208>,\n",
" <matplotlib.axis.XTick at 0x113ecd8d0>,\n",
" <matplotlib.axis.XTick at 0x113ecdf98>,\n",
" <matplotlib.axis.XTick at 0x113ed36a0>],\n",
" <a list of 17 Text xticklabel objects>)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110ad4208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.bar(range(len(row_labels)), food_data[:, 1])\n",
"plt.xticks(range(len(row_labels)), row_labels, rotation=90)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x113eb5e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"\n",
"single_dimension_pca = PCA(n_components=1) # project data down to a single dimension\n",
"single_dimension_food_data = single_dimension_pca.fit_transform(food_data.T)\n",
"\n",
"# matplotlib doesn't have a built-in 1D scatter plot but we can\n",
"# just use a 2D scatter plot with y-axis values all set to 0\n",
"y_axis_all_zeros = np.zeros(len(single_dimension_food_data))\n",
"\n",
"plt.scatter(single_dimension_food_data, y_axis_all_zeros)\n",
"for idx in range(len(single_dimension_food_data)):\n",
" plt.annotate(column_labels[idx], (single_dimension_food_data[idx], y_axis_all_zeros[idx]), rotation=90)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.67444346])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"single_dimension_pca.explained_variance_ratio_"
]
}
],
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment