{"cells":[
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "import pandas as pd\nimport numpy as np\nfrom matplotlib import pyplot as plt\n\n%matplotlib inline\n\ntrainData = pd.read_csv(\"../input/train.csv\", usecols=[1, 2, 3, 4])\ntrainLabels = pd.read_csv(\"../input/train.csv\", usecols=[5])\n\ntrainData = np.array(trainData, dtype=np.float32)\ntrainLabels = np.array(trainLabels, dtype=np.int64).squeeze()"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "unique = np.unique(trainLabels)\nfor idx in range(0, 1000):\n    idxs = np.where(trainLabels == unique[idx])[0]\n    curCheckins = trainData[idxs]\n    centroid = np.mean(curCheckins, axis=0)\n    curDistsX = np.abs(curCheckins[:, 0] - centroid[0])\n    curDistsY = np.abs(curCheckins[:, 1] - centroid[1])\n\n    if idx == 0:\n        distsX = curDistsX\n        distsY = curDistsY\n        checkins = curCheckins\n    else:\n        distsX = np.concatenate((distsX, curDistsX))\n        distsY = np.concatenate((distsY, curDistsY))\n        checkins = np.vstack((checkins, curCheckins))\n\n\n\nhist, bins = np.histogram(checkins[:, 2], 10, (0, 1000))\nidxs = np.digitize(checkins[:, 2], bins)\nidxs = idxs - 1\n\nmediansX = []\nmediansY = []\nfor i in range(len(bins)):\n    curDistsX = distsX[np.nonzero(idxs == i)]\n    curDistsY = distsY[np.nonzero(idxs == i)]\n\n    mediansX.append(np.median(curDistsX))\n    mediansY.append(np.median(curDistsY))\n\nx = np.linspace(0, 1000, 11)\nplt.ylim((0, 0.3))\n\nplt.plot(x, mediansX)\nplt.plot(x, mediansY)\nplt.show()"
 },
 {
  "cell_type": "markdown",
  "metadata": {},
  "source": "The script above finds the X and Y axis distance of each point to its label centroid and subsequently plots the median distance as a function of accuracy.\nAs you can see the accuracy has no influence on the median distance in Y axis (green), while the influence on distance in X axis is significant."
 }
],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}}, "nbformat": 4, "nbformat_minor": 0}