forked from BarathiGanesh-HB/Deep_Learning_Workshop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdigitsClassifier.ipynb.txt
364 lines (364 loc) · 21.8 KB
/
digitsClassifier.ipynb.txt
1
2
3
4
5
6
7
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
236
237
238
239
240
241
242
243
244
245
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
318
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
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# importing required libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from sklearn import datasets, svm, metrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# loading dataset"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0. 0. 5. 13. 9. 1. 0. 0.]\n",
" [ 0. 0. 13. 15. 10. 15. 5. 0.]\n",
" [ 0. 3. 15. 2. 0. 11. 8. 0.]\n",
" [ 0. 4. 12. 0. 0. 8. 8. 0.]\n",
" [ 0. 5. 8. 0. 0. 9. 8. 0.]\n",
" [ 0. 4. 11. 0. 1. 12. 7. 0.]\n",
" [ 0. 2. 14. 5. 10. 12. 0. 0.]\n",
" [ 0. 0. 6. 13. 10. 0. 0. 0.]]\n",
"(8L, 8L)\n"
]
}
],
"source": [
"digits = datasets.load_digits()\n",
"print digits.images[0]\n",
"print digits.images[0].shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# visualizing input images"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x91bb438>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(digits.images[0], cmap=plt.cm.gray_r, interpolation='nearest')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xa91ab38>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"images_and_labels = list(zip(digits.images, digits.target))\n",
"for index, (image, label) in enumerate(images_and_labels[:4]):\n",
" plt.subplot(2, 4, index + 1)\n",
" plt.axis('off')\n",
" plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')\n",
" plt.title('Training: %i' % label)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# making train test datasets"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of images 1797\n",
"train_matrix_shape (1797L, 64L)\n"
]
}
],
"source": [
"n_samples = len(digits.images)\n",
"print 'number of images', n_samples\n",
"data = digits.images.reshape((n_samples, -1))\n",
"print 'train_matrix_shape', data.shape"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(898L, 64L)\n",
"898\n"
]
},
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,\n",
" 3, 4, 5, 6, 7, 8, 9, 0, 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1, 7, 7, 3,\n",
" 5, 1, 0, 0, 2, 2, 7, 8, 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6, 6, 6, 4,\n",
" 9, 1, 5, 0, 9, 5, 2, 8, 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 4, 6, 3, 1, 3,\n",
" 9, 1, 7, 6, 8, 4, 3, 1, 4, 0, 5, 3, 6, 9, 6, 1, 7, 5, 4, 4, 7, 2, 8,\n",
" 2, 2, 5, 7, 9, 5, 4, 8, 8, 4, 9, 0, 8, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7,\n",
" 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,\n",
" 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1, 7, 7, 3, 5, 1, 0, 0, 2, 2, 7, 8,\n",
" 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6, 6, 6, 4, 9, 1, 5, 0, 9, 5, 2, 8,\n",
" 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 3, 1, 3, 9, 1, 7, 6, 8, 4, 3, 1, 4, 0,\n",
" 5, 3, 6, 9, 6, 1, 7, 5, 4, 4, 7, 2, 8, 2, 2, 5, 5, 4, 8, 8, 4, 9, 0,\n",
" 8, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1,\n",
" 7, 7, 3, 5, 1, 0, 0, 2, 2, 7, 8, 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6,\n",
" 6, 6, 4, 9, 1, 5, 0, 9, 5, 2, 8, 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 4, 6,\n",
" 3, 1, 3, 9, 1, 7, 6, 8, 4, 3, 1, 4, 0, 5, 3, 6, 9, 6, 1, 7, 5, 4, 4,\n",
" 7, 2, 8, 2, 2, 5, 7, 9, 5, 4, 8, 8, 4, 9, 0, 8, 9, 3, 0, 1, 2, 3, 4,\n",
" 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7,\n",
" 8, 9, 0, 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1, 7, 7, 3, 5, 1, 0, 0, 2,\n",
" 2, 7, 8, 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6, 6, 6, 4, 9, 1, 5, 0, 9,\n",
" 5, 2, 8, 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 4, 6, 3, 1, 3, 9, 1, 7, 6, 8,\n",
" 4, 3, 1, 4, 0, 5, 3, 6, 9, 6, 1, 7, 5, 4, 4, 7, 2, 8, 2, 2, 5, 7, 9,\n",
" 5, 4, 8, 8, 4, 9, 0, 8, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,\n",
" 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9, 5, 5, 6, 5,\n",
" 0, 9, 8, 9, 8, 4, 1, 7, 7, 3, 5, 1, 0, 0, 2, 2, 7, 8, 2, 0, 1, 2, 6,\n",
" 3, 3, 7, 3, 3, 4, 6, 6, 6, 4, 9, 1, 5, 0, 9, 5, 2, 8, 2, 0, 0, 1, 7,\n",
" 6, 3, 2, 1, 7, 4, 6, 3, 1, 3, 9, 1, 7, 6, 8, 4, 3, 1, 4, 0, 5, 3, 6,\n",
" 9, 6, 1, 7, 5, 4, 4, 7, 2, 8, 2, 2, 5, 7, 9, 5, 4, 8, 8, 4, 9, 0, 8,\n",
" 9, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,\n",
" 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1, 7,\n",
" 7, 3, 5, 1, 0, 0, 2, 2, 7, 8, 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6, 6,\n",
" 6, 4, 9, 1, 5, 0, 9, 5, 2, 8, 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 4, 6, 3,\n",
" 1, 3, 9, 1, 7, 6, 8, 4, 3, 1, 4, 0, 5, 3, 6, 9, 6, 1, 7, 5, 4, 4, 7,\n",
" 2, 8, 2, 2, 5, 7, 9, 5, 4, 8, 8, 4, 9, 0, 8, 9, 8, 0, 1, 2, 3, 4, 5,\n",
" 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8,\n",
" 9, 0, 9, 5, 5, 6, 5, 0, 9, 8, 9, 8, 4, 1, 7, 7, 3, 5, 1, 0, 0, 2, 2,\n",
" 7, 8, 2, 0, 1, 2, 6, 3, 3, 7, 3, 3, 4, 6, 6, 6, 4, 9, 1, 5, 0, 9, 5,\n",
" 2, 8, 2, 0, 0, 1, 7, 6, 3, 2, 1, 7, 4, 6, 3, 1, 3, 9, 1, 7, 6, 8, 4,\n",
" 3, 1, 4, 0, 5, 3, 6, 9, 6, 1, 7, 5, 4, 4, 7, 2, 8, 2, 2, 5, 7, 9, 5,\n",
" 4])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data = data[:n_samples // 2]\n",
"train_label = digits.target[:n_samples // 2]\n",
"print train_data.shape\n",
"print len(train_label)\n",
"train_label"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"test_data = data[n_samples // 2:]\n",
"test_label = digits.target[n_samples // 2:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# prediction"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"classifier = svm.SVC(gamma=0.001)\n",
"classifier.fit(train_data, train_label)\n",
"predicted = classifier.predict(test_data)\n",
"expected = test_label"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# measuring performance"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification report for classifier SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
" decision_function_shape='ovr', degree=3, gamma=0.001, kernel='rbf',\n",
" max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
" tol=0.001, verbose=False):\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 0.99 0.99 88\n",
" 1 0.99 0.97 0.98 91\n",
" 2 0.99 0.99 0.99 86\n",
" 3 0.98 0.87 0.92 91\n",
" 4 0.99 0.96 0.97 92\n",
" 5 0.95 0.97 0.96 91\n",
" 6 0.99 0.99 0.99 91\n",
" 7 0.96 0.99 0.97 89\n",
" 8 0.94 1.00 0.97 88\n",
" 9 0.93 0.98 0.95 92\n",
"\n",
"avg / total 0.97 0.97 0.97 899\n",
"\n",
"\n",
"Confusion matrix:\n",
"[[87 0 0 0 1 0 0 0 0 0]\n",
" [ 0 88 1 0 0 0 0 0 1 1]\n",
" [ 0 0 85 1 0 0 0 0 0 0]\n",
" [ 0 0 0 79 0 3 0 4 5 0]\n",
" [ 0 0 0 0 88 0 0 0 0 4]\n",
" [ 0 0 0 0 0 88 1 0 0 2]\n",
" [ 0 1 0 0 0 0 90 0 0 0]\n",
" [ 0 0 0 0 0 1 0 88 0 0]\n",
" [ 0 0 0 0 0 0 0 0 88 0]\n",
" [ 0 0 0 1 0 1 0 0 0 90]]\n"
]
}
],
"source": [
"print(\"Classification report for classifier %s:\\n%s\\n\"\n",
" % (classifier, metrics.classification_report(expected, predicted)))\n",
"print(\"Confusion matrix:\\n%s\" % metrics.confusion_matrix(expected, predicted))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# visualizing predicted images"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nPw2R45dGOqE6AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xac2b710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"images_and_predictions = list(zip(digits.images[n_samples // 2:], predicted))\n",
"for index, (image, prediction) in enumerate(images_and_predictions[:4]):\n",
" plt.subplot(2, 4, index + 5)\n",
" plt.axis('off')\n",
" plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')\n",
" plt.title('Prediction: %i' % prediction)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.14"
}
},
"nbformat": 4,
"nbformat_minor": 1
}