{"cells":[
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "from csv import DictReader\nfrom collections import defaultdict\nfrom datetime import datetime"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "start = datetime.now()"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "def get_top5(d):\n    return \" \".join(sorted(d, key=d.get, reverse=True)[:5])"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "destination_clusters = defaultdict(lambda: defaultdict(int))"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "for i, row in enumerate(DictReader(open(\"../input/train.csv\"))):\n\tdestination_clusters[row[\"srch_destination_id\"]][row[\"hotel_cluster\"]] += 1\n\tif i % 1000000 == 0:\n\t\tprint(\"%s\\t%s\"%(i, datetime.now() - start))"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "most_frequent = defaultdict(str)"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "for k in destination_clusters:\n\tmost_frequent[k] = get_top5(destination_clusters[k])"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "with open(\"pred_sub.csv\", \"w\") as outfile:\n\toutfile.write(\"id,hotel_cluster\\n\")\n\tfor i, row in enumerate(DictReader(open(\"../input/test.csv\"))):\n\t\toutfile.write(\"%d,%s\\n\"%(i,most_frequent[row[\"srch_destination_id\"]]))\n\t\tif i % 1000000 == 0:\n\t\t\tprint(\"%s\\t%s\"%(i, datetime.now() - start))"
 }
],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}}, "nbformat": 4, "nbformat_minor": 0}