1050 lines
166 KiB
Plaintext
1050 lines
166 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"PCA is commonly used with high dimensional data. One type of high dimensional data is images. In this example, I will show you a similar use case using images of numbers.\n",
|
||
"\n",
|
||
"A classic example of working with image data is the MNIST dataset, which was open sourced in the late 1990s by researchers across Microsoft, Google, and NYU. I have linked more information about the dataset below this video in the workbook: http://yann.lecun.com/exdb/mnist/\n",
|
||
"\n",
|
||
"To get started, let's import the libraries we will need for the rest of the notebook."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"from sklearn.decomposition import PCA\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.ensemble import RandomForestClassifier\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.metrics import confusion_matrix, accuracy_score\n",
|
||
"\n",
|
||
"import matplotlib.image as mpimg\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"\n",
|
||
"%matplotlib inline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The dataset has 42,000 images in the training dataset, and another 28,000 images in a test set. Let's read in the datasets and see what they look like. If you would like to follow along with me, you can open the workspace below this video in another window and work along with me. Let's take a closer look at the data."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"train = pd.read_csv('./data/train.csv')\n",
|
||
"train.fillna(0, inplace=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Loading the data may take a bit of time, but once it is loaded, we will focus on the training dataset. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>pixel0</th>\n",
|
||
" <th>pixel1</th>\n",
|
||
" <th>pixel2</th>\n",
|
||
" <th>pixel3</th>\n",
|
||
" <th>pixel4</th>\n",
|
||
" <th>pixel5</th>\n",
|
||
" <th>pixel6</th>\n",
|
||
" <th>pixel7</th>\n",
|
||
" <th>pixel8</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>pixel774</th>\n",
|
||
" <th>pixel775</th>\n",
|
||
" <th>pixel776</th>\n",
|
||
" <th>pixel777</th>\n",
|
||
" <th>pixel778</th>\n",
|
||
" <th>pixel779</th>\n",
|
||
" <th>pixel780</th>\n",
|
||
" <th>pixel781</th>\n",
|
||
" <th>pixel782</th>\n",
|
||
" <th>pixel783</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 785 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n",
|
||
"0 1 0 0 0 0 0 0 0 0 \n",
|
||
"1 0 0 0 0 0 0 0 0 0 \n",
|
||
"2 1 0 0 0 0 0 0 0 0 \n",
|
||
"3 4 0 0 0 0 0 0 0 0 \n",
|
||
"4 0 0 0 0 0 0 0 0 0 \n",
|
||
"\n",
|
||
" pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 \\\n",
|
||
"0 0 ... 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"1 0 ... 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"2 0 ... 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"3 0 ... 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"4 0 ... 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
" pixel779 pixel780 pixel781 pixel782 pixel783 \n",
|
||
"0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"1 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"2 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"3 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"4 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
"[5 rows x 785 columns]"
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"train.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>pixel0</th>\n",
|
||
" <th>pixel1</th>\n",
|
||
" <th>pixel2</th>\n",
|
||
" <th>pixel3</th>\n",
|
||
" <th>pixel4</th>\n",
|
||
" <th>pixel5</th>\n",
|
||
" <th>pixel6</th>\n",
|
||
" <th>pixel7</th>\n",
|
||
" <th>pixel8</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>pixel774</th>\n",
|
||
" <th>pixel775</th>\n",
|
||
" <th>pixel776</th>\n",
|
||
" <th>pixel777</th>\n",
|
||
" <th>pixel778</th>\n",
|
||
" <th>pixel779</th>\n",
|
||
" <th>pixel780</th>\n",
|
||
" <th>pixel781</th>\n",
|
||
" <th>pixel782</th>\n",
|
||
" <th>pixel783</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>6304.000000</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6304.000000</td>\n",
|
||
" <td>6304.000000</td>\n",
|
||
" <td>6304.000000</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" <td>6304.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>4.440355</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.139594</td>\n",
|
||
" <td>0.142291</td>\n",
|
||
" <td>0.026967</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>2.885613</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5.099940</td>\n",
|
||
" <td>5.531089</td>\n",
|
||
" <td>1.675547</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>9.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>253.000000</td>\n",
|
||
" <td>253.000000</td>\n",
|
||
" <td>130.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 785 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 \\\n",
|
||
"count 6304.000000 6304.0 6304.0 6304.0 6304.0 6304.0 6304.0 6304.0 \n",
|
||
"mean 4.440355 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"std 2.885613 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"min 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"25% 2.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"50% 4.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"75% 7.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"max 9.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
" pixel7 pixel8 ... pixel774 pixel775 pixel776 \\\n",
|
||
"count 6304.0 6304.0 ... 6304.000000 6304.000000 6304.000000 \n",
|
||
"mean 0.0 0.0 ... 0.139594 0.142291 0.026967 \n",
|
||
"std 0.0 0.0 ... 5.099940 5.531089 1.675547 \n",
|
||
"min 0.0 0.0 ... 0.000000 0.000000 0.000000 \n",
|
||
"25% 0.0 0.0 ... 0.000000 0.000000 0.000000 \n",
|
||
"50% 0.0 0.0 ... 0.000000 0.000000 0.000000 \n",
|
||
"75% 0.0 0.0 ... 0.000000 0.000000 0.000000 \n",
|
||
"max 0.0 0.0 ... 253.000000 253.000000 130.000000 \n",
|
||
"\n",
|
||
" pixel777 pixel778 pixel779 pixel780 pixel781 pixel782 pixel783 \n",
|
||
"count 6304.0 6304.0 6304.0 6304.0 6304.0 6304.0 6304.0 \n",
|
||
"mean 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"std 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"min 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"25% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"50% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"75% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"max 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
"[8 rows x 785 columns]"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"train.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"From a header and the describe of the data, we can see that the data has a label column with what digit was created, and the pixels for each part of the image are the features. The values for the pixels are between 0 and 255. You can find an article on the pixel values in the article below in the notebook. https://homepages.inf.ed.ac.uk/rbf/HIPR2/value.htm\n",
|
||
"\n",
|
||
"Given what we know about the data, let's split the label off and put the images in their own matrix."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"train.fillna(0, inplace=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# save the labels to a Pandas series target\n",
|
||
"y = train['label']\n",
|
||
"# Drop the label feature\n",
|
||
"X = train.drop(\"label\",axis=1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52cfffeb70>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"sns.countplot(y, color = sns.color_palette()[0]); #a very quick look at the data shows that all the labels appear roughly 4k times"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's take a look at what a few of the numbers look like with this little helper function. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def show_images(num_images):\n",
|
||
" '''\n",
|
||
" This function plots the num_images provided of MNIST dataset. \n",
|
||
" \n",
|
||
" INPUT: num_images - int - The number of images you would like to view.\n",
|
||
" Mod 10 of num_images should be 0 and it should be fewer than 101 images.\n",
|
||
" OUTPUT: A figure with the images shown for the training data.\n",
|
||
" '''\n",
|
||
" if num_images % 10 == 0 and num_images <= 100:\n",
|
||
" for digit_num in range(0,num_images): \n",
|
||
" plt.subplot(num_images/10,10,digit_num+1) #create subplots\n",
|
||
" mat_data = X.iloc[digit_num].as_matrix().reshape(28,28) #reshape images\n",
|
||
" plt.imshow(mat_data) #plot the data\n",
|
||
" plt.xticks([]) #removes numbered labels on x-axis\n",
|
||
" plt.yticks([]) #removes numbered labels on y-axis\n",
|
||
" else:\n",
|
||
" print('That is not the right input, please read the docstring before continuing.')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:12: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
|
||
" if sys.path[0] == '':\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52cffc85f8>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_images(100)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Some of these look pretty easy to identify, and others not so much... I wrote another helper function to be able to see each of the first 50 images of any one type of number."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def show_images_by_digit(digit_to_see):\n",
|
||
" '''\n",
|
||
" This function plots the digits_to_see provided of MNIST dataset. \n",
|
||
" \n",
|
||
" INPUT: digits_to_see - int - A number between 0 and 9 of what you want to see.\n",
|
||
" OUTPUT: A figure with the images shown for the training data.\n",
|
||
" '''\n",
|
||
" if digit_to_see in list(range(10)):\n",
|
||
" indices = np.where(y == digit_to_see) # pull indices for num of interest\n",
|
||
" for digit_num in range(0,50): \n",
|
||
" plt.subplot(5,10, digit_num+1) #create subplots\n",
|
||
" mat_data = X.iloc[indices[0][digit_num]].as_matrix().reshape(28,28) #reshape images\n",
|
||
" plt.imshow(mat_data) #plot the data\n",
|
||
" plt.xticks([]) #removes numbered labels on x-axis\n",
|
||
" plt.yticks([]) #removes numbered labels on y-axis \n",
|
||
" else:\n",
|
||
" print('That is not the right input, please read the docstring before continuing.')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:12: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
|
||
" if sys.path[0] == '':\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52c83a75c0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_images_by_digit(1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Some of these ones are pretty wild looking... One common way to use PCA is to reduce the dimensionality of high dimensionality data that you want to use for prediction, but the results seem to be overfitting (potentially because their is a lot of noise in the data. Which can certainly be the case with image data).\n",
|
||
"\n",
|
||
"Let's take a first pass on creating a simple model to predict the values of the images using all of the data."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[205 0 0 0 0 0 4 0 0 0]\n",
|
||
" [ 0 234 3 0 1 0 1 2 2 0]\n",
|
||
" [ 1 4 211 1 3 0 1 7 0 0]\n",
|
||
" [ 2 0 5 171 0 6 0 1 4 2]\n",
|
||
" [ 0 0 1 0 165 1 4 0 0 7]\n",
|
||
" [ 2 1 0 4 1 174 2 1 1 0]\n",
|
||
" [ 3 0 1 0 0 2 204 1 0 0]\n",
|
||
" [ 0 0 6 1 5 0 0 205 2 6]\n",
|
||
" [ 1 1 2 7 0 3 0 1 185 2]\n",
|
||
" [ 2 1 0 2 13 2 0 2 3 183]]\n",
|
||
"AxesSubplot(0.125,0.125;0.62x0.755)\n",
|
||
"0.930802498799\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0.93080249879865451"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52c9000208>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"#Because we will fit this more than once, might as well make a function\n",
|
||
"def fit_random_forest_classifier(X, y):\n",
|
||
" '''\n",
|
||
" INPUT: names are pretty self explanatory\n",
|
||
" OUTPUT: none - prints the confusion matrix and accuracy\n",
|
||
" '''\n",
|
||
" #First let's create training and testing data\n",
|
||
" X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n",
|
||
"\n",
|
||
" #We could grid search and tune, but let's just fit a simple model to see how it does\n",
|
||
" #instantiate\n",
|
||
" clf = RandomForestClassifier(n_estimators=100, max_depth=None)\n",
|
||
"\n",
|
||
" #fit\n",
|
||
" clf.fit(X_train, y_train)\n",
|
||
"\n",
|
||
" #predict\n",
|
||
" y_preds = clf.predict(X_test)\n",
|
||
"\n",
|
||
" #score\n",
|
||
" mat = confusion_matrix(y_test, y_preds)\n",
|
||
" print(mat)\n",
|
||
" print(sns.heatmap(mat, annot=True, cmap='bwr', linewidths=.5))\n",
|
||
" acc = accuracy_score(y_test, y_preds)\n",
|
||
" print(acc)\n",
|
||
" return acc\n",
|
||
" \n",
|
||
"fit_random_forest_classifier(X, y)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The above model does pretty well on the test set using all of the data, let's see how we well a model can do with a much lower number of features. Perhaps, we can do as well or better by reducing the noise in the original features.\n",
|
||
"\n",
|
||
"Working with unsupervised techniques in scikit learn follows a similar process as working with supervised techniques, but excludes predicting and scoring, and instead we just need to transform our data. Often the fit and transform are done all in one step.\n",
|
||
"\n",
|
||
"1. Instantiate\n",
|
||
"2. Fit \n",
|
||
"3. Transform \n",
|
||
"\n",
|
||
"It is worth mentioning that because all of our features are on the same scale from 0 to 255, scaling isn't super necessary here. At the same time, I usually try to create processes that are extendible without having to think and dive into the details again. Without standardizing, this process would only work for data that was already scaled.\n",
|
||
"\n",
|
||
"You can use the below function to perform PCA on this dataset, but also any other dataset."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def do_pca(n_components, data):\n",
|
||
" '''\n",
|
||
" Transforms data using PCA to create n_components, and provides back the results of the\n",
|
||
" transformation.\n",
|
||
" \n",
|
||
" INPUT: n_components - int - the number of principal components to create\n",
|
||
" data - the data you would like to transform\n",
|
||
" \n",
|
||
" OUTPUT: pca - the pca object created after fitting the data\n",
|
||
" X_pca - the transformed X matrix with new number of components\n",
|
||
" '''\n",
|
||
" X = StandardScaler().fit_transform(data)\n",
|
||
" pca = PCA(n_components)\n",
|
||
" X_pca = pca.fit_transform(X)\n",
|
||
" return pca, X_pca"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"pca, X_pca = do_pca(2, X)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(6304, 2)"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_pca.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[108 0 46 8 6 10 26 0 5 0]\n",
|
||
" [ 0 207 0 4 2 7 4 5 8 6]\n",
|
||
" [ 40 2 67 28 15 22 33 1 16 4]\n",
|
||
" [ 9 1 27 22 27 29 25 10 25 16]\n",
|
||
" [ 5 4 17 17 50 16 16 12 12 29]\n",
|
||
" [ 9 8 31 23 16 20 30 4 34 11]\n",
|
||
" [ 33 6 53 17 8 28 32 4 28 2]\n",
|
||
" [ 3 5 1 8 38 10 3 95 8 54]\n",
|
||
" [ 7 7 24 29 22 30 30 9 34 10]\n",
|
||
" [ 2 12 4 17 30 10 4 53 10 66]]\n",
|
||
"AxesSubplot(0.125,0.125;0.62x0.755)\n",
|
||
"0.336857280154\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0.3368572801537722"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52c86c8eb8>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fit_random_forest_classifier(X_pca, y)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"So, let's look at the positives first... that was super fast. But clearly two components isn't giving us enough information to clearly identify the digits. Let's consider a few more components, and take a closer look at what we know about the components."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(2, 784)"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pca.components_.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_components(X, y):\n",
|
||
" '''\n",
|
||
" plots the data in a 2 dimensional space to view separation\n",
|
||
" INPUT: pretty straightforward again\n",
|
||
" OUTPUT: none\n",
|
||
" '''\n",
|
||
" x_min, x_max = np.min(X, 0), np.max(X, 0)\n",
|
||
" X = (X - x_min) / (x_max - x_min)\n",
|
||
" plt.figure(figsize=(10, 6))\n",
|
||
" for i in range(X.shape[0]):\n",
|
||
" plt.text(X[i, 0], X[i, 1], str(y[i]), color=plt.cm.Set1(y[i]), fontdict={'size': 15})\n",
|
||
"\n",
|
||
" plt.xticks([]), plt.yticks([]), plt.ylim([-0.1,1.1]), plt.xlim([-0.1,1.1])\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f52cfff0550>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plot_components(X_pca[:100], y[:100])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"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.6.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|