Learn practical skills, build real-world projects, and advance your career
# Jovian Commit Essentials
# Please retain and execute this cell without modifying the contents for `jovian.commit` to work
!pip install jovian --upgrade -q
import jovian
jovian.utils.colab.set_colab_file_id('1W4LcUH0bEdxc0LiBqusCs-EJ0Xc9q4Ja')

2η Εργασία στο μάθημα Νευρωνικά Δίκτυα - Βαθιά Μάθηση

Υλοποίηση Support Vector Machine

Σε αυτή την εργασία θα αναπτύξουμε και θα χρησιμοποιήσουμε ένα μοντέλο Support Vector Machines (SVM) για την αναγνώριση των ψηφίων. Τα SVM είναι ένα μοντέλο που θεωρούνταν state-of-the-art πριν τη δημοφιλία των νευρωνικών δικτύων. Το πρόβλημα που προσπαθούν να επιλύσουν είναι η εύρεση ενός υπερεπιπέδου με το μεγαλύτερο δυνατό περιθώριο για το διαχωρισμό δύο κλάσεων.

Το σύνολο δεδομένων MNIST αποτελείται από ψηφία από 0-9 γραμμένα στο χέρι. Είναι ένα κλασικό σύνολο δεδομένων που χρησιμοποιείται ευρέως στη τεχνητή όραση και τη βαθιά μάθηση. Αποτελείται από 60000 train δείγματα και 10000 test δείγματα. Κάθε δείγμα αποτελείται από 784 χαρακτηριστικά που είναι εικόνες 28×28. Oι τιμές των pixel για κάθε εικόνας ψηφίου αποτελείται από τα ένα πίνακα με 784 χαρακτηριστικά (features) και τη πραγματική τιμή (label) του εικονιζόμενου ψηφίου.

!pip install jovian cvxopt sklearn --upgrade --quiet

Ας κάνουμε import τις βιβλιοθήκες που θα χρησιμοποιήσουμε στη συνέχεια.

import numpy as np
import torch
import torchvision
import time
import matplotlib.pyplot as plt
from torchvision.datasets import MNIST
import torchvision.transforms as transforms
import numpy as np
import cvxopt 
import cvxopt.solvers
from sklearn.decomposition import PCA
from scipy.linalg import eigh
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import validation_curve
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import GridSearchCV