Implement a basic character recognition system of handwritten digits using logistic regression. The data set provided contains instances of the 10 digits available (0 through 9). Your goal is to train and test a logistic regression model that classifies the image of a digit as even or odd.


Download the training and test sets ( 

Two files are provided. Each of these files contains thousands of 28×28 grayscale images.

Each image is encoded as a row of 784 integer values between 0 and 255 indicating the brightness of each pixel. The original label is an integer between 0 and 9 and it represents the actual digit the image actually encodes. The file contain 785 columns. The first column corresponds to the digit labels (0-9) and the remaining 784 columns correspond to the pixel values of the 28×28=784 pixels of the image.

If you want to see the image encoded in each row, you can use the following functions (in R):

rotate <- function(x) {

  return(t(apply(x, 2, rev)))


plot_matrix <- function(vec) {

  q <- matrix(vec, 28, 28, byrow = TRUE)

  nq <- apply(q, 2, as.numeric)

  image(rotate(nq), col = gray((0:255)/255))


If you want to plot the third image, for example, you can call the plot function as follows: 

plot_matrix(mydata[3, 2:785])


1. Relabel each row with a 1 if the digit it corresponds to is even, and 0 if it is odd.

2. Train a logistic regression model to learn the binary variable you just created using all the columns that correspond to pixel values as inputs.

3. Study and use the ROC ( (Links to an external site.)) to understand the effects of various threshold values for classification.

# Please do it in R

Get a 10 % discount on an order above $ 100
Use the following coupon code :