%matplotlib inline import matplotlib.pyplot as plt from sklearn import datasets, svm, metrics from sklearn.model_selection import train_test_split
digits = datasets.load_digits()
def Explore_A(): _, axes = plt.subplots(2, 4) images_and_labels = list(zip(digits.images, digits.target)) for ax, (image, label) in zip(axes[0, :], images_and_labels[:4]): ax.set_axis_off() ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') ax.set_title('Training: %i' % label) def Explore_B(): plt.figure(1, figsize=(3,3)) plt.imshow(digits.images[3], cmap=plt.cm.gray_r, interpolation='nearest') # Explore_A() Explore_B()
n_samples = len(digits.images) data = digits.images.reshape((n_samples, -1))
def Create_method_A(): classifier = svm.SVC(gamma=0.001) return classifier def Create_method_B(): classifier = svm.SVC(gamma=0.001, kernel = 'linear') return classifier # classifier = Create_method_A() classifier = Create_method_B()
X_train, X_test, y_train, y_test = train_test_split( data, digits.target, test_size=0.5, shuffle=False)
classifier.fit(X_train, y_train)
predicted = classifier.predict(X_test)
images_and_predictions = list(zip(digits.images[n_samples // 2:], predicted)) for ax, (image, prediction) in zip(axes[1, :], images_and_predictions[:4]): ax.set_axis_off() ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') ax.set_title('Prediction: %i' % prediction)
print("Classification report for classifier %s:\n%s\n" % (classifier, metrics.classification_report(y_test, predicted))) disp = metrics.plot_confusion_matrix(classifier, X_test, y_test) disp.figure_.suptitle("Confusion Matrix") print("Confusion matrix:\n%s" % disp.confusion_matrix)