import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml # MNIST data
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
# load MNIST data from https://www.openml.org/d/554
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
X = X.to_numpy()
y = y.to_numpy()
# generate training and test datasets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
plt.subplots(1, 6, figsize=(15,5))
for i in range(6):
index = 9000 + i # image number
pixels = np.array(X_train[index], dtype='uint8')
pixels = pixels.reshape((28, 28))
plt.subplot(1, 6, i+1)
plt.title('Label is {label}'.format(label=y_train[index]))
plt.imshow(pixels, cmap='gray')
plt.xticks(())
plt.yticks(())
### YOUR CODE HERE ###
### YOUR CODE HERE ###
import png
filename = "your_own_digit.png"
image = np.zeros((1, 28, 28, 1), dtype=np.uint8)
pngdata = png.Reader(open(filename, 'rb')).asDirect()
for i_row, row in enumerate(pngdata[2]):
image[0, i_row, :, 0] = row
plt.imshow(np.squeeze(image), cmap="gray")
plt.xticks(())
plt.yticks(())
plt.show()
# one digit, -1: unspecified number determined by numpy
my_digit = image.reshape((1,-1))
### YOUR CODE HERE ###