09_pca_boston.ipynb 38.3 KB
Newer Older
1
2
3
4
5
6
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Jens Ehlers's avatar
Jens Ehlers committed
7
    "# Hauptkomponentenanalyse mit dem Boston Housing-Datensatz"
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Daten einlesen"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "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>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>TARGET</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>0.06076</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.976</td>\n",
       "      <td>91.0</td>\n",
       "      <td>2.1675</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.64</td>\n",
       "      <td>23.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>0.10959</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.794</td>\n",
       "      <td>89.3</td>\n",
       "      <td>2.3889</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>393.45</td>\n",
       "      <td>6.48</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>0.04741</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.030</td>\n",
       "      <td>80.8</td>\n",
       "      <td>2.5050</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>396.90</td>\n",
       "      <td>7.88</td>\n",
       "      <td>11.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>506 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0    0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1    0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2    0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "..       ...   ...    ...   ...    ...    ...   ...     ...  ...    ...   \n",
       "503  0.06076   0.0  11.93   0.0  0.573  6.976  91.0  2.1675  1.0  273.0   \n",
       "504  0.10959   0.0  11.93   0.0  0.573  6.794  89.3  2.3889  1.0  273.0   \n",
       "505  0.04741   0.0  11.93   0.0  0.573  6.030  80.8  2.5050  1.0  273.0   \n",
       "\n",
       "     PTRATIO       B  LSTAT  TARGET  \n",
       "0       15.3  396.90   4.98    24.0  \n",
       "1       17.8  396.90   9.14    21.6  \n",
       "2       17.8  392.83   4.03    34.7  \n",
       "..       ...     ...    ...     ...  \n",
       "503     21.0  396.90   5.64    23.9  \n",
       "504     21.0  393.45   6.48    22.0  \n",
       "505     21.0  396.90   7.88    11.9  \n",
       "\n",
       "[506 rows x 14 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "boston = load_boston()\n",
    "\n",
    "import pandas as pd, numpy as np\n",
    "pd.set_option('display.max_rows', 6)\n",
    "df = pd.DataFrame(data = np.c_[boston['data'], boston['target']], columns = boston['feature_names'].tolist() + ['TARGET'])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Matrix der Korrelationskoeffizienten"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
236
       "<AxesSubplot:>"
237
238
239
240
241
242
243
244
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
245
      "image/png": "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\n",
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = df.corr()\n",
    "\n",
    "# generate a mask for the upper triangle\n",
    "mask = np.zeros_like(corr, dtype=np.bool); mask[np.triu_indices_from(mask)] = True \n",
    "\n",
    "# generate a custom colormap\n",
    "import seaborn as sns\n",
    "cmap = sns.diverging_palette(220, 10, as_cmap=True)\n",
    "\n",
    "%matplotlib inline\n",
    "sns.heatmap(corr, mask=mask, cmap=cmap, vmin=-1, vmax=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Standardisierung und Hauptkomponentenanalyse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3, 13)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "x = StandardScaler().fit_transform(boston['data'])\n",
    "\n",
    "from sklearn.decomposition import PCA\n",
    "pca = PCA(n_components = 3)\n",
    "xd = pca.fit_transform(x)\n",
    "pca.components_.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Erklärter Anteil der Varianz je Hauptkomponente =  [0.47129606 0.11025193 0.0955859 ]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
318
       "0.6771338939748568"
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print( \"Erklärter Anteil der Varianz je Hauptkomponente = \", pca.explained_variance_ratio_ )\n",
    "sum(pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Beitrag je Merkmal zu den Hauptkomponenten"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
346
       "<matplotlib.colorbar.Colorbar at 0x268ff204c70>"
347
348
349
350
351
352
353
354
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
355
      "image/png": "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\n",
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
      "text/plain": [
       "<Figure size 1152x265.846 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.matshow(pca.components_, cmap=cmap)\n",
    "plt.yticks([0, 1, 2], [\"PC1\", \"PC2\", \"PC3\"])\n",
    "plt.xticks(range(len(boston.feature_names)), boston.feature_names)\n",
    "plt.colorbar()"
   ]
  }
 ],
 "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",
391
   "version": "3.8.5"
392
393
394
395
396
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}