Kaggle : Digital Recognizer Submitted By: Amruta Kulkarni, Manjari Gautam, Tilottama Bandopadhay

Pixel Distinction

library(dplyr)
## 
## Attaching package: 'dplyr'
## 
## The following object is masked from 'package:stats':
## 
##     filter
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(png)

# This script calculates the frequency each pixel is turned on for digits of each label.
# It then Lists pixels that are used at least 5x more frequently in for one label than they are for all others
# For each digit, it plots the pixels that are used especially frequently in writing that digit
# (i.e. darkness in image 1 represents: (pixel usage in writing the number 1) / (pixel usage in all written numbers)

# Read competition data files:
setwd("C:/Users/Manjari/Desktop/Machine learning/Final Report Manjari")
train<- data.frame(read.csv("train.csv",header=T))
binarizePixels = function(rawDf) 
  {
  output = rawDf
  output[,2:ncol(output)] = ifelse(output[,2:ncol(output)]>0,1,0)
  return(output)
}

magnify <- function(im, r)
  {
  result <- matrix(nrow=nrow(im)*r, ncol=ncol(im)*r)
  for(i in 1:nrow(im))
    {
    for(j in 1:ncol(im))
      {
      for(k in 1:r)
        {
        for(l in 1:r)
          {
          result[(i - 1) * r + (k - 1) + 1, (j - 1) * r + (l - 1) + 1] <- im[[i, j]]
        }
      }
    }
  }
  return(result)
}

binarizedTrain = binarizePixels(train)
fracPixelsOn = colMeans(binarizedTrain)
fracPixelsOnByLabel = binarizedTrain %>% group_by %>% summarise_each(funs(mean))
pixelOverrepresentationRatio = sweep(fracPixelsOnByLabel, 2, fracPixelsOn, '/')
pixelOverrepresentationRatio$label = fracPixelsOnByLabel$label  
pixelOverrepresentationRatio[is.na(pixelOverrepresentationRatio)] = 0 #replace na vals from dividing by 0 on unused pixels


## 
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 0 :
## pixel59 pixel224 pixel331 pixel332 pixel359 pixel360 pixel387 pixel388 pixel415 pixel449 pixel615 pixel643
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 1 :
## pixel364 pixel588 pixel616
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 2 :
## pixel12 pixel13 pixel14 pixel15 pixel86 pixel90 pixel91 pixel92 pixel114 pixel390 pixel391 pixel418 pixel419 pixel446 pixel447 pixel474 pixel475 pixel501 pixel502 pixel503 pixel528 pixel529 pixel530 pixel531 pixel556 pixel557 pixel558 pixel559 pixel583 pixel584 pixel585 pixel586 pixel611 pixel612 pixel613 pixel614 pixel639 pixel640 pixel641 pixel642 pixel668 pixel669 pixel698 pixel725 pixel726
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 3 :
## pixel113 pixel143 pixel144 pixel169 pixel171 pixel172 pixel450 pixel478 pixel505 pixel506 pixel533 pixel534 pixel535 pixel561 pixel562 pixel563 pixel589 pixel590 pixel591 pixel618 pixel619 pixel646 pixel647 pixel674 pixel675 pixel676 pixel702
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 4 :
## 
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 5 :
## pixel136 pixel137 pixel138 pixel164 pixel165 pixel166 pixel167 pixel192 pixel193 pixel194 pixel195 pixel220 pixel221 pixel222 pixel223 pixel248 pixel249 pixel250 pixel251 pixel277 pixel278 pixel279 pixel305 pixel306 pixel587
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 6 :
## pixel12 pixel13 pixel32 pixel33 pixel34 pixel35 pixel36 pixel37 pixel38 pixel39 pixel40 pixel41 pixel42 pixel43 pixel44 pixel45 pixel46 pixel47 pixel48 pixel49 pixel50 pixel51 pixel58 pixel60 pixel61 pixel62 pixel63 pixel64 pixel65 pixel66 pixel67 pixel68 pixel69 pixel70 pixel71 pixel72 pixel73 pixel74 pixel75 pixel76 pixel77 pixel78 pixel79 pixel80 pixel81 pixel86 pixel88 pixel98 pixel99 pixel100 pixel101 pixel102 pixel103 pixel104 pixel105 pixel106 pixel107 pixel108 pixel109 pixel110
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 7 :
## pixel197 pixel198 pixel225 pixel226 pixel227 pixel252 pixel253 pixel254 pixel255 pixel256 pixel280 pixel281 pixel282 pixel283 pixel284 pixel308 pixel309 pixel310 pixel311 pixel312 pixel336 pixel337 pixel338 pixel339 pixel365 pixel366 pixel367 pixel393 pixel394 pixel705 pixel706 pixel707 pixel733 pixel734 pixel735 pixel736 pixel737 pixel738 pixel739 pixel740 pixel741 pixel742 pixel743 pixel744 pixel753 pixel761 pixel762 pixel763 pixel764 pixel765 pixel766 pixel767 pixel768 pixel769 pixel770 pixel771 pixel772 pixel773 pixel774 pixel775 pixel776 pixel777 pixel778 pixel779
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 8 :
## pixel307 pixel335
## 
## Pixels that are used at least 5x more frequently when the handwritten digit is 9 :
## pixel504 pixel718 pixel719 pixel720 pixel721 pixel722 pixel723 pixel724 pixel725 pixel746 pixel747 pixel748 pixel749 pixel750 pixel751 pixel752