From 8b3f06131b09dae1d6923b7269dc7885a4e2886a Mon Sep 17 00:00:00 2001
From: Vedrana Andersen Dahl <vedranaa@gmail.com>
Date: Mon, 27 Mar 2023 17:17:59 +0200
Subject: [PATCH] Added chapter 9

---
 Chapter09/digits_overview.py | 48 ++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 Chapter09/digits_overview.py

diff --git a/Chapter09/digits_overview.py b/Chapter09/digits_overview.py
new file mode 100644
index 0000000..4db864d
--- /dev/null
+++ b/Chapter09/digits_overview.py
@@ -0,0 +1,48 @@
+#%%
+import numpy as np
+import matplotlib.pyplot as plt
+import sklearn.datasets
+
+digits = sklearn.datasets.load_digits()
+images = digits['images']
+targets = digits['target']
+
+X = images.reshape((images.shape[0], -1)).T
+h = X.max()/2
+X = (X - h)/h
+I = np.eye(10, dtype=bool)
+T = I[targets].T
+
+def disp(i):
+    '''Helping function whens showing images'''
+    return (i.reshape(8, 8) + 1) / 2
+
+nr_images = images.shape[0]
+nr_show = 8
+rg = np.random.default_rng()
+random_subset = sorted(rg.choice(range(nr_images), nr_show, replace=False))
+
+fig, ax = plt.subplots(1, nr_show)
+for s, a in zip(random_subset, ax):
+    a.imshow(disp(X[:, s]))
+    a.set_title(f'Im. {s}\nTarget {np.argmax(T[:, s])}')
+plt.show()
+
+#%% 
+# Dividing data into training and test set. The same apprach can be used for
+# dividing into training and validation.
+
+
+train_percentage = 0.8
+permuted = rg.permutation(range(nr_images))
+c = int(nr_images*train_percentage)
+
+train = sorted(permuted[:c])
+test = sorted(permuted[c:])
+
+X_train= X[:, train]
+T_train= T[:, train]
+
+X_test = X[:, test]
+T_test = T[:, test]
+
-- 
GitLab