{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Homework 3. Bayesian Tomatoes\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "
\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this assignment, you'll be analyzing movie reviews from [Rotten Tomatoes](http://www.rottentomatoes.com). This assignment will cover:\n", "\n", " * Working with web APIs\n", " * Making and interpreting predictions from a Bayesian perspective\n", " * Using the Naive Bayes algorithm to predict whether a movie review is positive or negative\n", " * Using cross validation to optimize models\n", "\n", "Useful libraries for this assignment\n", "\n", "* [numpy](http://docs.scipy.org/doc/numpy-dev/user/index.html), for arrays\n", "* [scikit-learn](http://scikit-learn.org/stable/), for machine learning\n", "* [json](http://docs.python.org/2/library/json.html) for parsing JSON data from the web.\n", "* [pandas](http://pandas.pydata.org/), for data frames\n", "* [matplotlib](http://matplotlib.org/), for plotting\n", "* [requests](http://docs.python-requests.org/en/latest/), for downloading web content" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "\n", "import json\n", "\n", "import requests\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "pd.set_option('display.width', 500)\n", "pd.set_option('display.max_columns', 30)\n", "\n", "# set some nicer defaults for matplotlib\n", "from matplotlib import rcParams\n", "\n", "#these colors come from colorbrewer2.org. Each is an RGB triplet\n", "dark2_colors = [(0.10588235294117647, 0.6196078431372549, 0.4666666666666667),\n", " (0.8509803921568627, 0.37254901960784315, 0.00784313725490196),\n", " (0.4588235294117647, 0.4392156862745098, 0.7019607843137254),\n", " (0.9058823529411765, 0.1607843137254902, 0.5411764705882353),\n", " (0.4, 0.6509803921568628, 0.11764705882352941),\n", " (0.9019607843137255, 0.6705882352941176, 0.00784313725490196),\n", " (0.6509803921568628, 0.4627450980392157, 0.11372549019607843),\n", " (0.4, 0.4, 0.4)]\n", "\n", "rcParams['figure.figsize'] = (10, 6)\n", "rcParams['figure.dpi'] = 150\n", "rcParams['axes.color_cycle'] = dark2_colors\n", "rcParams['lines.linewidth'] = 2\n", "rcParams['axes.grid'] = False\n", "rcParams['axes.facecolor'] = 'white'\n", "rcParams['font.size'] = 14\n", "rcParams['patch.edgecolor'] = 'none'\n", "\n", "\n", "def remove_border(axes=None, top=False, right=False, left=True, bottom=True):\n", " \"\"\"\n", " Minimize chartjunk by stripping out unnecesary plot borders and axis ticks\n", " \n", " The top/right/left/bottom keywords toggle whether the corresponding plot border is drawn\n", " \"\"\"\n", " ax = axes or plt.gca()\n", " ax.spines['top'].set_visible(top)\n", " ax.spines['right'].set_visible(right)\n", " ax.spines['left'].set_visible(left)\n", " ax.spines['bottom'].set_visible(bottom)\n", " \n", " #turn off all ticks\n", " ax.yaxis.set_ticks_position('none')\n", " ax.xaxis.set_ticks_position('none')\n", " \n", " #now re-enable visibles\n", " if top:\n", " ax.xaxis.tick_top()\n", " if bottom:\n", " ax.xaxis.tick_bottom()\n", " if left:\n", " ax.yaxis.tick_left()\n", " if right:\n", " ax.yaxis.tick_right()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "Rotten Tomatoes gathers movie reviews from critics. An [entry on the website](http://www.rottentomatoes.com/m/primer/reviews/?type=top_critics) typically consists of a short quote, a link to the full review, and a Fresh/Rotten classification which summarizes whether the critic liked/disliked the movie.\n", "\n", "\n", "When critics give quantitative ratings (say 3/4 stars, Thumbs up, etc.), determining the Fresh/Rotten classification is easy. However, publications like the New York Times don't assign numerical ratings to movies, and thus the Fresh/Rotten classification must be inferred from the text of the review itself.\n", "\n", "This basic task of categorizing text has many applications. All of the following questions boil down to text classification:\n", "\n", " * Is a movie review positive or negative?\n", " * Is an email spam, or not?\n", " * Is a comment on a blog discussion board appropriate, or not?\n", " * Is a tweet about your company positive, or not?\n", " \n", "\n", "Language is incredibly nuanced, and there is an entire field of computer science dedicated to the topic (Natural Language Processing). Nevertheless, we can construct basic language models using fairly straightforward techniques. \n", "\n", "## The Data\n", "\n", "You will be starting with a database of Movies, derived from the MovieLens dataset. This dataset includes information for about 10,000 movies, including the IMDB id for each movie. \n", "\n", "Your first task is to download Rotten Tomatoes reviews from 3000 of these movies, using the Rotten Tomatoes API (Application Programming Interface)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Working with Web APIs\n", "Web APIs are a more convenient way for programs to interact with websites. Rotten Tomatoes has a nice API that gives access to it's data in JSON format.\n", "\n", "To use this, you will first need to [register for an API key](http://developer.rottentomatoes.com/member/register). For \"application URL\", you can use anything -- it doesn't matter.\n", "\n", "After you have a key, the [documentation page](http://developer.rottentomatoes.com/iodocs) shows the various data you can fetch from Rotten Tomatoes -- each type of data lives at a different web address. The basic pattern for fetching this data with Python is as follows (compare this to the Movie Reviews tab on the documentation page):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "api_key = 'YOUR KEY HERE'\n", "movie_id = '770672122' # toy story 3\n", "url = 'http://api.rottentomatoes.com/api/public/v1.0/movies/%s/reviews.json' % movie_id\n", "\n", "#these are \"get parameters\"\n", "options = {'review_type': 'top_critic', 'page_limit': 20, 'page': 1, 'apikey': api_key}\n", "data = requests.get(url, params=options).text\n", "data = json.loads(data) # load a json string into a collection of lists and dicts\n", "\n", "print json.dumps(data['reviews'][0], indent=2) # dump an object into a json string" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{\n", " \"publication\": \"Village Voice\", \n", " \"links\": {\n", " \"review\": \"http://www.villagevoice.com/2010-06-15/film/toys-are-us-in-toy-story-3/full/\"\n", " }, \n", " \"quote\": \"When teenaged Andy plops down on the grass to share his old toys with a shy little girl, the film spikes with sadness and layered pleasure -- a concise, deeply wise expression of the ephemeral that feels real and yet utterly transporting.\", \n", " \"freshness\": \"fresh\", \n", " \"critic\": \"Eric Hynes\", \n", " \"date\": \"2013-08-04\"\n", "}\n" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 1: Get the data\n", "Here's a chunk of the MovieLens Dataset:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from io import StringIO \n", "movie_txt = requests.get('https://raw.github.com/cs109/cs109_data/master/movies.dat').text\n", "movie_file = StringIO(movie_txt) # treat a string like a file\n", "movies = pd.read_csv(movie_file, delimiter='\\t')\n", "\n", "#print the first row\n", "movies[['id', 'title', 'imdbID', 'year']].irow(0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "id 1\n", "title Toy story\n", "imdbID 114709\n", "year 1995\n", "Name: 0, dtype: object" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### P1.1\n", "\n", "We'd like you to write a function that looks up the first 20 Top Critic Rotten Tomatoes reviews for a movie in the movies dataframe. This involves two steps:\n", "\n", "1. Use the Movie Alias API to look up the Rotten Tomatoes movie id from the IMDB id\n", "1. Use the Movie Reviews API to fetch the first 20 top-critic reviews for this movie\n", "\n", "Not all movies have Rotten Tomatoes IDs. In these cases, your function should return None. The detailed spec is below. We are giving you some freedom with how you implement this, but you'll probably want to break this task up into several small functions.\n", "\n", "**Hint**\n", "In some situations, the leading 0s in front of IMDB ids are important. IMDB ids have 7 digits" ] }, { "cell_type": "code", "collapsed": true, "input": [ "\"\"\"\n", "Function\n", "--------\n", "fetch_reviews(movies, row)\n", "\n", "Use the Rotten Tomatoes web API to fetch reviews for a particular movie\n", "\n", "Parameters\n", "----------\n", "movies : DataFrame \n", " The movies data above\n", "row : int\n", " The row of the movies DataFrame to use\n", " \n", "Returns\n", "-------\n", "If you can match the IMDB id to a Rotten Tomatoes ID:\n", " A DataFrame, containing the first 20 Top Critic reviews \n", " for the movie. If a movie has less than 20 total reviews, return them all.\n", " This should have the following columns:\n", " critic : Name of the critic\n", " fresh : 'fresh' or 'rotten'\n", " imdb : IMDB id for the movie\n", " publication: Publication that the critic writes for\n", " quote : string containing the movie review quote\n", " review_data: Date of review\n", " rtid : Rotten Tomatoes ID for the movie\n", " title : Name of the movie\n", " \n", "If you cannot match the IMDB id to a Rotten Tomatoes ID, return None\n", "\n", "Examples\n", "--------\n", ">>> reviews = fetch_reviews(movies, 0)\n", ">>> print len(reviews)\n", "20\n", ">>> print reviews.irow(1)\n", "critic Derek Adams\n", "fresh fresh\n", "imdb 114709\n", "publication Time Out\n", "quote So ingenious in concept, design and execution ...\n", "review_date 2009-10-04\n", "rtid 9559\n", "title Toy story\n", "Name: 1, dtype: object\n", "\"\"\"\n", "#your code here\n", "def base_url():\n", " return 'http://api.rottentomatoes.com/api/public/v1.0/'\n", "\n", "def rt_id_by_imdb(imdb):\n", " \"\"\"\n", " Queries the RT movie_alias API. Returns the RT id associated with an IMDB ID,\n", " or raises a KeyError if no match was found\n", " \"\"\"\n", " url = base_url() + 'movie_alias.json'\n", " \n", " imdb = \"%7.7i\" % imdb\n", " params = dict(id=imdb, type='imdb', apikey=api_key)\n", " \n", " r = requests.get(url, params=params).text\n", " r = json.loads(r)\n", " \n", " return r['id']\n", "\n", "\n", "def _imdb_review(imdb):\n", " \"\"\"\n", " Query the RT reviews API, to return the first page of reviews \n", " for a movie specified by its IMDB ID\n", " \n", " Returns a list of dicts\n", " \"\"\" \n", " rtid = rt_id_by_imdb(imdb)\n", " url = base_url() + 'movies/{0}/reviews.json'.format(rtid)\n", "\n", " params = dict(review_type='top_critic',\n", " page_limit=20,\n", " page=1,\n", " country='us',\n", " apikey=api_key)\n", " data = json.loads(requests.get(url, params=params).text)\n", " data = data['reviews']\n", " data = [dict(fresh=r['freshness'], \n", " quote=r['quote'], \n", " critic=r['critic'], \n", " publication=r['publication'], \n", " review_date=r['date'],\n", " imdb=imdb, rtid=rtid\n", " ) for r in data]\n", " return data\n", "\n", "def fetch_reviews(movies, row):\n", " m = movies.irow(row)\n", " try:\n", " result = pd.DataFrame(_imdb_review(m['imdbID']))\n", " result['title'] = m['title']\n", " except KeyError:\n", " return None\n", " return result" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### P1.2\n", "\n", "Use the function you wrote to retrieve reviews for the first 3,000 movies in the movies dataframe.\n", "\n", "##### Hints\n", "* Rotten Tomatoes limits you to **10,000 API requests a day**. Be careful about this limit! Test your code on smaller inputs before scaling. You are responsible if you hit the limit the day the assignment is due :)\n", "* This will take a while to download. If you don't want to re-run this function every time you restart the notebook, you can save and re-load this data as a CSV file. However, please don't submit this file" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "build_table\n", "\n", "Parameters\n", "----------\n", "movies : DataFrame\n", " The movies data above\n", "rows : int\n", " The number of rows to extract reviews for\n", " \n", "Returns\n", "--------\n", "A dataframe\n", " The data obtained by repeatedly calling fetch_reviews on the first rows\n", " of movies, discarding the Nones,\n", " and concatenating the results into a single DataFrame\n", "\"\"\"\n", "#your code here\n", "def build_table(movies, rows):\n", " dfs = [fetch_reviews(movies, r) for r in range(rows)]\n", " dfs = [d for d in dfs if d is not None]\n", " return pd.concat(dfs, ignore_index=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "#you can toggle which lines are commented, if you\n", "#want to re-load your results to avoid repeatedly calling this function\n", "\n", "#critics = build_table(movies, 3000)\n", "#critics.to_csv('critics.csv', index=False)\n", "critics = pd.read_csv('critics.csv')\n", "\n", "\n", "#for this assignment, let's drop rows with missing quotes\n", "critics = critics[~critics.quote.isnull()]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 2: Explore\n", "\n", "Before delving into analysis, get a sense of what these data look like. Answer the following questions. Include your code!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.1** How many reviews, critics, and movies are in this dataset?\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#your code here\n", "n_reviews = len(critics)\n", "n_movies = critics.rtid.unique().size\n", "n_critics = critics.critic.unique().size\n", "\n", "\n", "print \"Number of reviews: %i\" % n_reviews\n", "print \"Number of critics: %i\" % n_critics\n", "print \"Number of movies: %i\" % n_movies" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of reviews: 15557\n", "Number of critics: 622\n", "Number of movies: 1923\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.2** What does the distribution of number of reviews per reviewer look like? Make a histogram" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "def histogram_style():\n", " remove_border(left=False)\n", " plt.grid(False)\n", " plt.grid(axis='y', color='w', linestyle='-', lw=1)\n", "\n", "critics.groupby('critic').rtid.count().hist(log=True, bins=range(20), edgecolor='white')\n", "plt.xlabel(\"Number of reviews per critic\")\n", "plt.ylabel(\"N\")\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnQAAAGMCAYAAABTQD8mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtU1HX+x/HXdxAEFS01EIXUME1R8orJagKVaSUdS91s\nNbyU6W6lua5r5ipunDIr0zJvW6Kle/S03bbLmpWSsla6GqdMd/NC5iUmzbaSJJT5/P7w56yjiOJl\nvvPB5+MczpHvfJnPe2Canuc7M99xjDFGAAAAsJbH7QEAAABwbgg6AAAAyxF0AAAAliPoAAAALEfQ\nAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHLWBd1///tfderUSe3atVNSUpJmzZrl9kgAAACucmz7pAif\nz6fS0lJFRkbq559/VlJSktatW6fLLrvM7dEAAABcYd0ROo/Ho8jISEnSoUOHVL16df/3AAAAFyPr\ngk6SfvjhB1199dW6/PLL9cADDyg6OtrtkQAAAFxj3VOux/v222+Vnp6uN954Q82aNXN7HAAAAFcE\n/Qjd6tWrlZmZqfj4eHk8Hi1atOikfWbPnq2mTZsqKipKHTt2VH5+frnXFRMTo7S0NBUUFFzosQEA\nAEJW0IOuuLhYycnJmjlzpqKiouQ4TsDly5Yt0+jRozVx4kQVFBQoNTVVvXr10q5duyQdPSr3008/\nSTr61OuaNWuUnJwc7JsBAAAQMlx9yjU6OlrPPfec7rrrLv+2zp07q23btpo3b55/W/PmzdW3b189\n+uijWrdune69914ZY+Q4jh588MGAnwcAALjYVHN7gOOVlpZq48aNGjduXMD2Hj16aO3atZKklJQU\nffrpp26MBwAAEJJC6l2u+/fvV1lZmWJjYwO2x8TEqKioyKWpAAAAQltIBR0AAAAqL6SCrn79+goL\nC5PX6w3Y7vV6FRcX59JUAAAAoS2kgi4iIkIdOnTQihUrAra/9957Sk1NdWkqAACA0Bb0N0UUFxdr\n69atko5+LuvOnTtVUFCgevXqKSEhQWPGjNGgQYOUkpKi1NRUzZ07V0VFRRoxYkSwRwUAALBC0E9b\nkpeXp4yMjKOLO46OLT948GAtWLBAkjRnzhxNmzZN33zzjdq0aaOnn35aXbt2DeaYAAAA1rD6o78A\nAAAQYq+hAwAAQOURdAAAAJYj6AAAACxH0AEAAFiOoAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoA\nAADLEXQAAACWI+gAAAAsR9ABAABYjqADAACwHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAA\nliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH\n0AEAAFiOoAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoAAADLEXQAAACWI+gAAAAsR9ABAABYjqAD\nAACwHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAA\nYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEAAFiOoAMAALAcQQcAAGA5gg4AAMBy\nBB0AAIDlCDoAAADLEXQAAACWI+gAAAAsR9ABAABYjqADAACwHEEHAABgOYIOAADAcgQdAACA5Qg6\nAAAAyxF059FhX1mVXg8AAIQmxxhj3B6iKonPHR+0tXYPmRq0tQAAQOjiCB0AAIDlCDoAAADLEXQA\nAACWI+gAAAAsR9ABAABYjqADAACwHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPoAAAA\nLEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEAAFiO\noAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoAAADLEXQAAACWI+gAAAAsZ13Q7dq1S2lpaUpKStLV\nV1+tv/3tb26PBAAA4Kpqbg9QWeHh4XrmmWeUnJwsr9erDh066Oabb1ZUVJTbowEAALjCuiN0DRo0\nUHJysiQpNjZW9evX14EDB1yeCgAAwD3WBd3xNmzYIJ/Pp0aNGrk9CgAAgGuse8r1mAMHDigrK0vP\nP/+826MAAAC4KuhH6FavXq3MzEzFx8fL4/Fo0aJFJ+0ze/ZsNW3aVFFRUerYsaPy8/MDLv/ll1/U\np08fPfTQQ7rmmmuCNToAAEBICnrQFRcXKzk5WTNnzlRUVJQcxwm4fNmyZRo9erQmTpyogoICpaam\nqlevXtq1a5ckyRijwYMHKyMjQ7/5zW+CPT4AAEDIcYwxxq3Fo6Oj9dxzz+muu+7yb+vcubPatm2r\nefPm+bc1b95cffv21aOPPqr8/Hx1795dV199tY6NvnjxYiUlJQV9/vLE544P2lq7h0wN2loAACB0\nhdRr6EpLS7Vx40aNGzcuYHuPHj20du1aSVLXrl1VVlbmxngAAAAhKaSCbv/+/SorK1NsbGzA9piY\nGBUVFbk0VeVw1AwAAARbSAVdVcBTrgAAINhC6jx09evXV1hYmLxeb8B2r9eruLg4l6YCAAAIbSEV\ndBEREerQoYNWrFgRsP29995TamqqS1MBAACEtqA/5VpcXKytW7dKknw+n3bu3KmCggLVq1dPCQkJ\nGjNmjAYNGqSUlBSlpqZq7ty5Kioq0ogRI4I9KgAAgBWCftqSvLw8ZWRkHF3ccfynHhk8eLAWLFgg\nSZozZ46mTZumb775Rm3atNHTTz+trl27BnPMs8Zr6AAAQLC5eh66qoigAwAAwRZSr6EDAABA5RF0\nAAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdBY77Cur0usB\nAIAzU83tAXD2wj1hfNQYAADgCB0AAIDtCDoAAADLEXQAAACWI+gAAAAsR9ABAABYjqADAACwHEEH\nAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAA\nwHIEHQAAgOUIOgAAAMsRdAAAAJYj6HDGDvvKqvR6AADYqprbA8Ae4Z4wxeeOD9p6u4dMDdpaAADY\njCN0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj\n6AAAACxH0AEAAFiOoEPIOuwrq9LrAQBwvlRzewDgVMI9YYrPHR+09XYPmRq0tQAAOJ8qDLoDBw6c\n0ZXUrVv3vAwDAACAyqsw6OrXr3/aK3AcR2VlPFUFAADglgqDbuXKleVudxxHy5cv14wZMxQeHn5B\nBgMAAMCZqTDo0tLSTtq2ceNGjRs3TmvWrNHw4cM1adKkCzUbAAAAzsAZv8t1x44dGjBggFJSUlSv\nXj1t3rxZzz77rC677LILOR8AAABO47RBt3//fo0aNUotW7aU1+vVRx99pGXLlikxMTEY8wEAAOA0\nKgy6nJwcJSYmKi8vT6+//rpWrlypTp06BWs2AAAAnIEKX0M3adIkRUZGKj4+XrNnz9acOXNkjAnY\nx3Ec/f3vf7+gQwIAAODUKgy6u+66S47jSNJJIXfMscsBAADgjgqDbuHChUEaAwAAAGeLz3IFAACw\nHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBB/y/w76y\nKr0eAKDqqvCjv4CLSbgnTPG544O23u4hU4O2FgCgauMIHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH\n0AEAAFiOoAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoAAADLEXQAAACWI+gAAAAsR9ABLjnsK6vS\n6wEAgqea2wMAF6twT5jic8cHbb3dQ6YGbS0AQHBxhA4AAMByBB0AAIDlCDoAAADLEXQAAACWI+gA\nAAAsR9ABAABYjqADAACwHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AKqEw76yKr0eAFSkmtsD\nAMD5EO4JU3zu+KCtt3vI1KCtBQCnwxE6AAAAyxF0AAAAliPoAAAALGdl0PXp00d169ZVv3793B4F\nAADAdVYG3ejRo/Xiiy+6PQYAAEBIsDLounfvrlq1ark9BgAAQEiwMugAAADwPwQdgAuCE+8CQPAE\n/cTCq1ev1pNPPqmNGzdq7969ys3NVVZWVsA+s2fP1hNPPKGioiIlJSVpxowZ6tq1a8A+juMEc2wA\nlcSJfgEgeIJ+hK64uFjJycmaOXOmoqKiTgqzZcuWafTo0Zo4caIKCgqUmpqqXr16adeuXQH7GWOC\nOTYAAEDICnrQ9erVSzk5Obr99tvl8Zy8/PTp0zVkyBANGzZMLVq00DPPPKO4uDjNmTPHv8/111+v\n/v3765133lFCQoI++eSTYN4EAACAkOIYFw91RUdH67nnntNdd90lSSotLVXNmjW1dOlS3X777f79\n7rvvPm3atEl5eXkuTQoAABC6gv4auors379fZWVlio2NDdgeExOjoqIil6aqnGC/Zoj1WI/13FsP\nAEIF73IFAACwXEgFXf369RUWFiav1xuw3ev1Ki4uzqWpAAAAQltIBV1ERIQ6dOigFStWBGx/7733\nlJqa6tJUAAAAoS3or6ErLi7W1q1bJUk+n087d+5UQUGB6tWrp4SEBI0ZM0aDBg1SSkqKUlNTNXfu\nXBUVFWnEiBHBHhUAUAUd9pUp3BPGepauh/IFPejWr1+vjIwMSUdPDjx58mRNnjxZgwcP1oIFC9S/\nf3999913ysnJ0TfffKM2bdr4T08CAMC5quonva7qtw/lC3rQpaWlyefzVbjPyJEjNXLkyCBNBAAA\nYLeQeg0dAAAAKo+gAwAAsBxBBwAAYDmCDgAAnLXDvrIqvZ4tQuqjvwAAgF14V21o4AgdAACA5Qg6\nAAAAyxF0AAAAliPoAAAALEfQAQAC8K5FwD68yxUAEIB3LQL24QgdAACA5Qg6AAAAyxF0AAAAliPo\nAAAALEfQAQAAWI6gAwAAsBxBBwBwFeehA84d56EDALiK894B544jdAAAAJYj6AAAACxH0AEAAFiO\noAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoAAC4gTpx8fgX792nL348TCwMAcAFx4uTzi99n+ThC\nBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEAAFiOoAMAALAcQQcAAGA5gg4A\nzkIwPw7Ilo8eAuAePvoLAM5CMD9+aPeQqXzUEYAKcYQOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPo\nAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmCDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEA\nAFiOoAMAALAcQQcAAGA5gg4AAMByBB0AAIDlCDoAAADLEXQAAACWI+gAAAAsR9ABAABYjqADAACw\nHEEHAABgOYIOAADAcgQdAACA5Qg6AAAAyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDmC\nDgAAwHIEHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEAAFiOoAMAALAcQQcAAGA5gg4AAMByBB0A\nAIDlCDoAAADLEXQAAACWI+gAAAAsR9ABAABYjqADAACwHEEHAABgOYIOAADAcgQdAACA5Qg6AAAA\nyxF0AAAAliPoAAAALEfQAQAAWI6gAwAAsBxBBwAAYDkrg+6tt97SVVddpebNm+uFF15wexwAAABX\nVXN7gMo6cuSIfv/73ysvL0/R0dFq3769+vTpo7p167o9GgAAgCusO0K3bt06JSUlKS4uTrVq1dJN\nN92kFStWuD0WAACAa6wLur1796pRo0b+7+Pj47Vnzx4XJwIAAHCXdUHnOI7bIwAAAISUoAfd6tWr\nlZmZqfj4eHk8Hi1atOikfWbPnq2mTZsqKipKHTt2VH5+vv+yhg0bBhyR2717d8ARuxPl5eWd1/lR\ndXFfQWVwf8GZ4r6Cyjjb+0vQg664uFjJycmaOXOmoqKiTjritmzZMo0ePVoTJ05UQUGBUlNT1atX\nL+3atUuS1KlTJ23atEl79+7VwYMHtXz5ct14442nXI//kHCmuK+gMri/4ExxX0FlWBN0vXr1Uk5O\njm6//XZ5PCcvP336dA0ZMkTDhg1TixYt9MwzzyguLk5z5syRJFWrVk1PPfWU0tPT1a5dO40dO1aX\nXnppsG8GAABAyAip05aUlpZq48aNGjduXMD2Hj16aO3atf7ve/furd69ewd7PAAAgNBkXFSrVi2z\naNEi//d79uwxjuOYNWvWBOw3ZcoU06JFi7NaIysry0jiiy+++OKLL774CvmvrKyss+qdkDpCdyEs\nXLhQCxcudHsMAACACyakTltSv359hYWFyev1Bmz3er2Ki4tzaSoAAIDQFlJBFxERoQ4dOpz0yQ/v\nvfeeUlNTXZoKAAAgtAX9Kdfi4mJt3bpVkuTz+bRz504VFBSoXr16SkhI0JgxYzRo0CClpKQoNTVV\nc+fOVVFRkUaMGBHsUQEAAKwQ9CN069evV/v27dW+fXuVlJRo8uTJat++vSZPnixJ6t+/v2bMmKGc\nnBy1a9dOa9eu1TvvvKOEhIRKrVPRyYmBY7Kzs+XxeAK+GjZs6PZYCAFnchL07OxsNWrUSDVq1FB6\nero2b97swqQIBae7vwwePPikxxqeebo4PfbYY+rUqZPq1KmjmJgYZWZm6osvvjhpv8o+vgQ96NLS\n0uTz+eTz+VRWVub/94IFC/z7jBw5UoWFhSopKdH69evVtWvXSq1xupMTA8e76qqrVFRU5P/6/PPP\n3R4JIeB0J0F//PHHNX36dM2aNUvr169XTEyMbrjhBh08eNClieGm091fHMfRDTfcEPBY884777g0\nLdz04Ycf6r777tNHH32klStXqlq1arr++uv1/fff+/c5q8eXs3pvbIhLSUkxw4cPD9h25ZVXmoce\nesiliRCqJk+ebFq3bu32GAhxJ55iyefzmQYNGphHH33Uv+3QoUMmOjrazJs3z40REUJOvL8Yc/QU\nWrfccotLEyGUHTx40ISFhZm33nrLGHP2jy8h9aaI8+HYyYl79OgRsP3EkxMDx+zYsUONGjXSFVdc\noQEDBqiwsNDtkRDiCgsL5fV6Ax5nIiMjde211/I4g3I5jqP8/HzFxsaqRYsWGj58uPbt2+f2WAgB\nP/74o3w+n/9Tr8728aXKBd3+/ftVVlam2NjYgO0xMTEqKipyaSqEqmuuuUaLFi3Su+++q7/85S8q\nKipSamqqDhw44PZoCGHHHkt4nMGZ6tmzp1566SWtXLlSTz31lNatW6eMjAyVlpa6PRpcNmrUKLVr\n105dunSRdPaPL1X+xMJARXr27On/d+vWrdWlSxc1bdpUixYt0oMPPujiZLDVia+dAiTp17/+tf/f\nSUlJ6tChgxo3bqy3335bffr0cXEyuGnMmDFau3at8vPzz+ixo6J9qtwROk5OjHNRo0YNJSUladu2\nbW6PghDWoEEDSSr3cebYZUBF4uLiFB8fz2PNRezBBx/UsmXLtHLlSjVp0sS//WwfX6pc0HFyYpyL\nkpISbdmyhfhHhZo2baoGDRoEPM6UlJQoPz+fxxmckX379mnPnj081lykRo0a5Y+55s2bB1x2to8v\nYdnZ2dkXamC31K5dW5MnT1bDhg0VFRWlnJwc5efnKzc3V3Xq1HF7PISQsWPHKjIyUj6fT19++aXu\nu+8+7dixQ/PmzeO+cpErLi7W5s2bVVRUpBdeeEFt2rRRnTp1dPjwYdWpU0dlZWWaOnWqWrRoobKy\nMo0ZM0Zer1fz589XRESE2+MjyCq6v1SrVk0TJkxQ7dq1deTIERUUFOjuu++Wz+fTrFmzuL9cZH73\nu9/pxRdf1Msvv6z4+HgdPHhQBw8elOM4ioiIkOM4Z/f4csHfj+uS2bNnmyZNmpjq1aubjh07mjVr\n1rg9EkLQHXfcYRo2bGgiIiJMo0aNTN++fc2WLVvcHgshYNWqVcZxHOM4jvF4PP5/DxkyxL9Pdna2\niYuLM5GRkSYtLc188cUXLk4MN1V0fzl06JC58cYbTUxMjImIiDCNGzc2Q4YMMbt373Z7bLjgxPvI\nsa8pU6YE7FfZxxfHGGOC26YAAAA4n6rca+gAAAAuNgQdAACA5Qg6AAAAyxF0AAAAliPoAAAALEfQ\nAQAAWI6gAwAAsBxBB6BSBg8erN69e7s9RoA33nhDV155pcLDwzV06NCgrr1w4UJFR0cHdU3b5eXl\nyePx6MCBAxXul5aWpgceeCBIUwF2I+gAiwwePFgej0c5OTkB28/0f5Dng+M4chzngq9TGcOGDVO/\nfv309ddfa+bMmUFd+4477lBhYWFQ17Tdr371KxUVFalu3bqSTh3Fr7/+uh577LFgjwdYiaADLOI4\njiIjI/XEE09o//79rsxwoT5c5siRI2f1c99//70OHDigHj16KC4u7oyPlpWWlp7VeieKjIxU/fr1\nz8t1hbLDhw+fl+s5cuSIwsPDFRMTc9p9L7nkEtWsWfO8rAtUdQQdYJn09HQ1adJEjzzyyCn3Ke+I\n3VdffSWPx6ONGzcG7LN8+XK1b99eNWrU0LXXXqs9e/Zo5cqVSk5OVnR0tDIzM/X999/7r8dxHBlj\nlJOTowYNGig6OlpDhw5VSUlJwAzTpk1Ts2bNVKNGDSUnJ2vJkiUnzbJ06VJlZGSoRo0amj9/frm3\n5fvvv1dWVpbq1q2rGjVq6IYbbtDmzZv9t6FevXqSpIyMDHk8Hq1evbrc62nSpImmTJmioUOH6tJL\nL9WgQYMkSWvXrlX37t1Vs2ZNxcfH67e//a1++uknSdL8+fPVoEED+Xy+gOu68847deutt0oq/+jS\nm2++qQ4dOigqKkpXXHGFJk6c6A+iuXPnqmXLlv5933//fXk8Hj3++OP+bQMHDtQ999wjSfrhhx80\naNAgxcbGKioqSomJiRUehczOzlabNm30/PPP6/LLL1eNGjXUp08ffffddwH75ebmqlWrVoqKilKL\nFi00Y8aMgFj3eDyaPXu2brvtNtWqVUsPP/zwKdd86qmndOWVVyoyMlIJCQmaMGGCpFP/nY+/f+bl\n5Wno0KEqLi6Wx+ORx+PRn//8Z0lHn3K9//77/euUlpZqwoQJatKkiSIjI5WYmKhnn332lHMBF5UL\n9NmzAC6ArKwsc8stt5h33nnHREREmO3btxtj/vfB4N9991253xtjTGFhoXEcx2zYsCFgn86dO5v8\n/Hzz2WefmdatW5vU1FSTnp5u1q1bZ/71r3+Zpk2bmlGjRgXMEB0dbfr372+++OIL8+6775pGjRqZ\nBx54wL/PhAkTzFVXXWXeffdd89VXX5m//vWvpmbNmubtt98OmKVJkybmlVdeMV999dUpP6g8MzPT\ntGzZ0qxZs8Z8/vnnJjMz0yQkJJhDhw6Z0tJSs3nzZuM4jnnttdeM1+s1paWl5V5P48aNTe3atc0T\nTzxhtm/fbrZt22Y+++wzU6tWLTN9+nSzbds288knn5guXbqYvn37GmOMOXDggImMjDTLly/3X89P\nP/1katasaV5++WVjjDG5ubmmVq1a/suXL19uateubRYuXGh27NhhVq1aZVq0aGHGjh1rjDFmy5Yt\nxnEc4/V6jTHGPPzww+ayyy4zPXv29F9HQkKCWbJkiTHGmPvuu8+0bdvWrF+/3nz99dcmLy/Pv3Z5\nJk+ebGrVqmXS09NNQUGB+ec//2mSkpJMZmamf5/58+ebuLg4/+/+zTffNA0aNDCzZs3y7+M4jomJ\niTEvvPCCKSwsNIWFheWuN378eHPJJZeY3Nxcs2PHDrNu3Tozd+5cY8yp/87H3z9LS0vNzJkzTc2a\nNY3X6zVer9cUFxcbY4xJS0sz999/v3+tO+64w8THx5tXX33VFBYWmjVr1piXXnrplL8L4GJC0AEW\nycrKMr179zbGGJOenm7uuOMOY8y5Bd2KFSv8+8yaNcs4jmM+/fRT/7bs7GzTunXrgBkuvfRS//90\njTFm8eLFpnr16ubnn382Bw8eNFFRUSY/Pz9g9lGjRpmbbropYJbp06dXeHu//PJL4ziOWbNmjX/b\nDz/8YOrUqWOef/55Y4wx+/btM47jmA8//LDC62rcuHFA1BhjzKBBg8ywYcMCtn366afGcRyzb98+\nY4wxt912mxk0aJD/8pdeesnUqVPH/PLLL8aYk4OuW7duJicnJ+A6X3vttYB94uLizNKlS40xxnTt\n2tU8/vjjplatWqasrMxs3brVOI5j9uzZY4w5GrRDhw6t8LYdb/LkySYsLMzs2rXLvy0/P984jmO2\nbdtmjDkajIsXLw74uaefftq0atXK/73jOAGRXp6ffvrJREZGmnnz5pV7+an+zifeP0/8HR5zfNAd\nuy+8++67Fc4EXKyquX2EEEDlmP9/Wuzxxx9Xly5d9Ic//OGcri85Odn/72Ova2rTpk3Atm+//fak\nn6lRo4b/+2uuuUalpaXavn27Dh06pJKSEt14440Bb544fPiwmjZtGnA9HTt2rHC2LVu2yOPxqEuX\nLv5ttWvXVps2bfxPu54px3FOWm/Dhg3avn27li1b5t9mjJHjONq+fbvq16+vgQMHKisrSyUlJYqM\njNSSJUvUt29fRURElLvOhg0btH79ek2dOtW/zefzqaSkRF6vV7GxserevbtWrVql3r17a/369Xrl\nlVc0Z84crVu3Tps2bVJiYqIaNmwoSRo5cqT69u2rDRs26IYbblDv3r117bXXVnhbGzVqpPj4eP/3\nKSkp8ng82rJli2rXrq3du3dr+PDhGjFihH+f8l7DeLq/z+bNm/XLL7/ouuuuq3C/013Pmfj000/l\n8XiUnp5+ztcFVEUEHWCpTp066fbbb9e4ceP0pz/9KeAyj+foy2PNca+JOtWL2sPDw/3/PhZgYWFh\nAdtOfA2ZqeCNEcf2feutt3T55Zefci1JZ/2Cd2OM/zZWxonrGWN0zz336MEHHzxp32NBddNNN6la\ntWp6/fVJ2sH3AAAFDklEQVTXlZGRoQ8++EArVqyocLbs7Gz169fvpMuOvXkiLS1N06dP10cffaRm\nzZopJiZGaWlpWrVqlTZv3hwQLT179tTOnTv1j3/8Qx988IFuvvlm9evXTwsWLKj07Zf+9/eZN2+e\nUlNTK9z3fL0hgTc2ABceQQdY7NFHH1WrVq20fPnygO2XXXaZJGnv3r3+Nw0UFBSct3U///xz/fzz\nz/6jdB9//LEiIiKUmJioI0eOqHr16vrqq6+UlpZ2Tuu0bNlSPp9Pa9euVbdu3SRJP/74ozZt2qRh\nw4ad681Q+/bttWnTJl1xxRWn3Kd69erq16+flixZon379ikuLq7C29W+fXtt2bKlwutMS0vTyJEj\ntWTJEn+8paWlafHixfrPf/4TcHRPkurVq6eBAwdq4MCB6tmzp+68807NmzfvpEA+Zs+ePdq9e7f/\nKN26devk8/nUsmVLxcbGqmHDhtq2bZsGDhx4yhnPRMuWLVW9enW9//77SkxMPOvriYiIUFlZWYX7\ntG3bVj6fTytXrtSNN9541msBVRVBB1gsMTFRw4cP14wZMwK2N2vWTAkJCcrOztbUqVNVWFh40rnr\nzsWRI0c0dOhQTZo0SXv27NH48eM1fPhwRUVFSZLGjh2rsWPHyhijbt266eDBg/r4448VFhbmf/fm\nmbjyyit166236t5779X8+fNVp04dPfzww6pTp47uvPPOc74df/zjH3XNNddo5MiRGj58uKKjo/Xv\nf/9bb731lubOnevfb+DAgcrIyFBhYaEGDBhQ4XVOmjRJt9xyixo3bqx+/fqpWrVq2rRpk9avX+9/\nJ2uLFi0UGxurxYsXa+nSpZKOBt3dd98tn88XEIyTJk1Shw4d1KpVKx05ckSvvvqqEhMTTxlzkhQV\nFaWsrCxNnz5dP//8s0aMGKFbbrnFH11TpkzR/fffr0suuUS9evXS4cOHtXHjRu3du1fjx48/499f\ndHS0Ro0apYceekjVq1dXt27d9N1332njxo0BT+eeTpMmTVRSUqL3339fbdu2Vc2aNRUVFSVz9HXe\nkqTmzZurf//+uvvuuzVz5ky1a9dOu3fv1s6dO885TIGqgNOWABYp76S+kyZNUnh4eMD28PBwLV26\nVDt27NDVV1+tKVOm6LHHHjvpZ8s7QXB5+xy/zXEcpaWlKSkpSenp6brtttt0/fXXa9q0af59Hnnk\nEWVnZ+vJJ59U69at1aNHD7322msBR63O9OTEubm5SklJUWZmpjp37qySkhItX75c1atXr/R1nahN\nmzZavXq1/2hi27ZtNWHCBDVo0CBgv27duik+Pl5btmwpNx6OX79Hjx56++23tWrVKnXu3FmdO3fW\ntGnT1Lhx44CfSUtLk8/nU/fu3SVJjRs3Vnx8fMDr56Sj57l7+OGH1bZtW3Xt2lXFxcV68803K7xd\nTZo00YABA9S7d29dd911atasmXJzc/2XDxs2TAsWLNBLL72ktm3b6tprr9Xzzz9f4VHFU3nsscf0\nxz/+UY888ohatWqlvn37as+ePeX+bo53/PbU1FSNGDFCAwYMUExMjJ544gn/Psfv9+KLL+rOO+/U\nAw88oJYtW2rIkCH68ccfKz0zUBU5pqIXwwAArJKdna1XXnlFn3/+udujAAgijtABAABYjqADgCok\nFD9rF8CFx1OuAAAAluMIHQAAgOUIOgAAAMsRdAAAAJYj6AAAACxH0AEAAFiOoAMAALDc/wHrXbXM\n16NNAQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.3** List the 5 critics with the most reviews, along with the publication they write for" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "#note: there are a few valid ways to deal with critics that write for several publications.\n", "\n", "counts = critics.groupby(['critic', 'publication']).critic.count()\n", "counts.sort()\n", "counts[-1:-6:-1]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "critic publication \n", "Roger Ebert Chicago Sun-Times 1074\n", "James Berardinelli ReelViews 803\n", "Janet Maslin New York Times 516\n", "Variety Staff Variety 431\n", "Jonathan Rosenbaum Chicago Reader 412\n", "dtype: int64" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.4** Of the critics with > 100 reviews, plot the distribution of average \"freshness\" rating per critic" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "\n", "df = critics.copy()\n", "df['fresh'] = df.fresh == 'fresh'\n", "grp = df.groupby('critic')\n", "counts = grp.critic.count() # number of reviews by each critic\n", "means = grp.fresh.mean() # average freshness for each critic\n", "\n", "means[counts > 100].hist(bins=10, edgecolor='w', lw=1)\n", "plt.xlabel(\"Average rating per critic\")\n", "plt.ylabel(\"N\")\n", "plt.yticks([0, 2, 4, 6, 8, 10])\n", "histogram_style()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nnNj/VfQjwfbs2SOPxyOPx3OdJ6x6yrPmBw4ckNvtvui2Zs0aH07s/yryOJ82bZri4+MVEhKiqKgo\nvfTSSz6YtOooz5pPmDDhko9zt9utY8eO+XBq/1bex/mKFSvUpk0b3XTTTfrVr36lhx56SHv27PHR\ntFVDedd88eLFat68ucLDwxUbG6u0tLQrn6TSb1u4xj755BMTFBRkZs+ebXJycszw4cNNRESEOXTo\n0CX337t3r5kzZ475v//7P3Po0CHz+eefm9q1a5vRo0f7eHL/Vd41/9m5c+fMXXfdZe677z7j8Xh8\nNG3VUN41z83NNS6Xy6xZs8bk5+d7b4WFhT6e3H9V5HE+cuRI07hxY/P555+b3Nxcs337drNy5Uof\nTu3fyrvmp06dKvX4Pnr0qOnYsaPp3Lmzjyf3X+Vd8z179pigoCDz4osvmn379pnt27ebbt26mYYN\nG/p4cv9V3jVfsWKFCQwMNO+++67Jzc01y5cvN1FRUeadd94p8zzWBVtiYqIZNmxYqW2NGjUyL730\n0lUfY+TIkaZt27bXerQqq6Jr/vzzz5shQ4aYjIwMExERcT1HrHLKu+Y/B9vWrVt9MV6VVN41z8nJ\nMUFBQSYnJ8cX41VJlf33+aFDh0xAQIBZuHDh9RivSirvmi9ZssQEBASYkpIS77a1a9cal8tljh8/\nfl1nrSrKu+Z9+/Y1jzzySKltM2bMMDExMWWex6qnRMvz8VSXs3fvXq1evfqiY+DSKrrmy5cv1/Ll\nyzVjxgwZXgZZLpV5nD/yyCOqXbu22rdvr08//fR6jlmlVGTN//znP6t+/fpasWKF6tevr7i4OA0e\nPFjff/+9L0b2e9fi3+cffvihbrnlFvXq1et6jFjlVGTN27Vrp4iICM2aNUvFxcU6efKkMjIylJiY\nqFtuucUXY/u1iqx5YWGhqlWrVmpbSEiI8vLydOjQ5T82zKpgq8zHUyUlJSk0NFSNGzfWb37zG02Y\nMOE6Tlp1VGTNDx8+rGHDhmn+/PkKCwvzxZhVSkXW3OPxaPLkyVqyZIlWrlypLl266PHHH9f8+fN9\nMbLfq8ia79+/XwcPHtTixYs1d+5czZs3Tzk5OXrggQf4n5SrUNmPGywuLtZHH32kgQMHKigo6HqN\nWaVUZM3r1q2rFStWaPz48QoJCdHNN9+snTt36i9/+YsvRvZ7FVnzbt266c9//rO++OILlZSUaPfu\n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\nJ029evXMl19+aXbu3Gn69OljqlevbpKTk7379OvXz7Rt29Zs2LDB5ObmmnfeeccEBwebHTt2XPZn\n7tChg/F4PGb06NFm165dJicnxxhjzLRp08y6devMwYMHzVdffWWaNm1qBg4caIwxprCw0EyfPt2E\nh4eb/Px8k5+fbwoKCowxxnTs2NEMHz7ce/x69eqZmjVrmj/+8Y9m3759ZsaMGcblcplNmzYZY4wp\nLi42CQkJ5t577zU7duwwmzZtMomJiSYoKMjMmTPnsnMPGjTIeDwe07t3b7Nz506zevVqc+utt5oR\nI0Z496no7+NS+vTpY6Kjo81nn31mcnNzzYYNG8zHH39sjDFm3bp1xuVymaZNm5ovvvjC5Obmmu+/\n/96kp6ebiIgIY4wxZ86cMaNHjzbx8fHeNTtz5owxxpjY2FgzefJkY8x/PrQ9KSnJNGnSxDv3mjVr\nzLJlyy67FgCuHsEGVAEdOnQwEydONMYYc/78eVO7dm3zpz/9qdTXH374oXf/3//+96Zbt27GGGNO\nnTplQkNDTWZmZqljPvfcc6ZHjx7GmP8XCFOmTLniLH369DFPPPGEMcaYkydPmuDgYLNo0SLv/QUF\nBaZGjRreYNu7d69xu93m0KFDpY7z4IMPmmeeeabMn7lZs2ZXnGflypWmWrVq3q9/GSO/dKlg69ev\nX6l9GjVqZFJSUowxxqxatcoEBgaaw4cPe+/fuHGjcblcVwy2GjVqeEPRGGM+/vhjU61aNXP69Olr\n+vvYvXu3cblcZvXq1Ze8/+dg++yzz0ptv3CN/vu//9vccccdF33/L4NtzZo1xu12e8MZwLUV6PQV\nPgCVs3fvXv31r3/VvHnzJEmBgYEaNGiQPvzwQ/Xq1UuBgYF6/PHHNX/+fA0ZMkTnzp3TZ599prff\nfluSlJ2drbNnz6pbt25yuVze454/f15xcXGlztWqVatSXxcXFys1NVWLFi3S4cOHde7cORUWFqpT\np06SpH379un8+fNKTEz0fs/PT53+bNu2bTLGKCEhodSxz507py5dulz253a5XGrZsuVF29euXatJ\nkyYpJydHJ06cUHFxsc6fP6+jR4+qTp06Za7lhcdv2rRpqW1RUVH6/vvvJUk5OTmKiopS3bp1vfe3\natVKbveVX2nStGlThYWFeb9u06aNCgsLtW/fPp05c6bCv48LZWVlye12e38fl3Ol41yNrKws1a1b\nV7fddluljwXgYgQb4Odmz56t4uJi1a9f37vN/P9v/s7Ly1N0dLQGDBigtm3b6vDhw9q8ebMKCwv1\nyCOPSPqzsXr4AAAFRUlEQVTP69kk6X/+53/061//utSxg4KCSn194Yvy09LSNGXKFL399tu68847\nFRERoZdeeskbNZdjfvHm9JKSErlcLm3duvWi813pBe0XznPw4EHdd999evLJJ5WSkqKaNWvq22+/\nVd++fSv0poQL53G5XN71qgxTxpvzK/P7qCh/frMFcKMg2AA/VlRUpDlz5ig1NVX333+/d7sxRgMH\nDlR6erpefvlltW7dWg0bNtTChQu1ceNGPfTQQ94rPAkJCapWrZoOHDigjh07luv8mZmZ6tmzp/r3\n7+89765du3TLLbdIkho0aKCgoCBt2bJFsbGxkqTTp0/r73//uxo1aiRJatGihYwxOnLkSLnPf6Gt\nW7fq/Pnzmjp1qvfq1Oeff15qn+DgYBUXF1fqPJIUHx+vw4cP68iRI96rbFu3br2qoPvb3/6m06dP\ne38HmzdvVnBwsBo0aKCioqIK/z4u1Lx5c5WUlGjt2rXq1q1bhY9zNWvWokULHTlyRDk5OYqPj6/w\nuQBcGsEG+LHly5fr+PHjGjp0qGrUqFHqvj59+ui9997Tyy+/LEnq37+/Zs2apYMHD2rp0qXe/Twe\nj0aPHq3Ro0fLGKO7775bp06d0ubNmxUQEKChQ4de9vy33XabFi1apL/+9a+qWbOmZsyYoQMHDnhn\niYiI0JAhQ/Tiiy+qVq1aqlOnjlJSUmSM8QZV48aN1b9/fw0ePFiTJ09WixYt9MMPP2j9+vVq0KCB\nHn744Uue2/znNbiltjVu3FglJSWaOnWqHn74YW3evFnTp08vtU9sbKzOnj2rL7/8Us2bN1d4eLhC\nQ0Mvebyyztm1a1fddtttGjRokNLS0nT69GmNGjVKgYGBpZ7KvJSioiINGTJEr7zyir777juNGTNG\nw4YN815RrOjv40KNGzdW79699cQTT2j69Olq0aKF8vLydPDgQQ0YMOCqjxMXF6eDBw8qKytLMTEx\nuummmxQcHFxqn3vvvVe/+c1v1KtXL02dOlWNGjXS3r17dfr0aT344INXfS4Al8af9QD82EcffaTO\nnTtfFGuS9Oijj+rgwYP68ssvJUkDBgzQ7t27dfPNN6tr166l9n3ttdc0YcIEpaWl6Y477lDXrl21\ndOnSUk+zXipCxo8fr8TERHXv3l0dOnSQx+NR//79S+2blpamu+++Wz179lSXLl3UrFkztWrVSiEh\nId590tPTlZycrBdeeEG33367HnjgAWVmZnqvyl2Ky+W6aKY777xT06dP15QpU9SkSRN99NFHSktL\nK7VfUlKSnnrqKfXt21eRkZH6wx/+cNnjlXVOl8ulpUuX6ty5c0pMTFRycrLGjRsnl8tV6me71DE6\ndOigJk2aqFOnTnrkkUd077336q233vLuU9Hfx6XMnTtX/fr104gRI3T77bcrOTlZP/300xWP88vt\nvXr1Uo8ePdSlSxdFRkbqk08+ueT+K1euVLt27TRgwAAlJCRo5MiROn/+/FXNCaBsfNIBAJ86d+6c\n6tWrpxdffFEjR450epxraseOHWrRooW+/fZbtWjR4pL7DB48WMePH9df/vIXH08HwJ/xlCiA62r7\n9u3Kzs5WYmKiTp48qTfffFMFBQV6/PHHnR6t0pYuXarw8HA1atRIBw4c0KhRo9S8efPLxhoAVBTB\nBuC6mzp1qnbt2qXAwEC1aNFCX3/9taKiopweq9JOnTqlMWPG6J///Kdq1KihTp06aerUqWV+z9U8\n9QoAF+IpUQAAAMvxpgMAAADLEWwAAACWI9gAAAAsR7ABAABYjmADAACwHMEGAABguf8Pc10WTWC+\nnpIAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.5**\n", "Using the original movies dataframe, plot the rotten tomatoes Top Critics Rating as a function of year. Overplot the average for each year, ignoring the score=0 examples (some of these are missing data). Comment on the result -- is there a trend? What do you think it means?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "\n", "data = movies[['year', 'rtTopCriticsRating']]\n", "data = data.convert_objects(convert_numeric=True)\n", "data = data[(data['rtTopCriticsRating'] > 0)]\n", "means = data.groupby('year').mean().dropna()\n", "\n", "plt.plot(data['year'], data['rtTopCriticsRating'], 'o', mec='none', alpha=.2, label='Data')\n", "plt.plot(means.index, means['rtTopCriticsRating'], '-', label='Yearly Average')\n", "plt.legend(loc='lower left', frameon=False)\n", "plt.xlabel(\"Year\")\n", "plt.ylabel(\"Average Score\")\n", "remove_border()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *This graph shows a trend towards a lower average score, as well as a greater abundance of low scores, with time. This is probably at least partially a selection effect -- Rotten Tomatoes probably doesn't archive reviews for all movies, especially ones that came out before the website existed. Thus, reviews of old movies are more often \"the classics\". Mediocre old movies have been partially forgotten, and are underrepresented in the data.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 3: Sentiment Analysis\n", "\n", "You will now use a [Naive Bayes classifier](https://en.wikipedia.org/wiki/Naive_Bayes_classifier) to build a prediction model for whether a review is fresh or rotten, depending on the text of the review. See Lecture 9 for a discussion of Naive Bayes.\n", "\n", "Most models work with numerical data, so we need to convert the textual collection of reviews to something numerical. A common strategy for text classification is to represent each review as a \"bag of words\" vector -- a long vector\n", "of numbers encoding how many times a particular word appears in a blurb.\n", "\n", "Scikit-learn has an object called a CountVectorizer that turns text into a bag of words. Here's a quick tutorial:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.feature_extraction.text import CountVectorizer\n", "\n", "text = ['Hop on pop', 'Hop off pop', 'Hop Hop hop']\n", "print \"Original text is\\n\", '\\n'.join(text)\n", "\n", "vectorizer = CountVectorizer(min_df=0)\n", "\n", "# call fit to build the vocabulary\n", "vectorizer.fit(text)\n", "\n", "# call transform to convert text to a bag of words\n", "x = vectorizer.transform(text)\n", "\n", "# CountVectorizer uses a sparse array to save memory, but it's easier in this assignment to \n", "# convert back to a \"normal\" numpy array\n", "x = x.toarray()\n", "\n", "print\n", "print \"Transformed text vector is \\n\", x\n", "\n", "# get_feature_names tracks which word is associated with each column of the transformed x\n", "print\n", "print \"Words for each feature:\"\n", "print vectorizer.get_feature_names()\n", "\n", "# Notice that the bag of words treatment doesn't preserve information about the *order* of words, \n", "# just their frequency" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Original text is\n", "Hop on pop\n", "Hop off pop\n", "Hop Hop hop\n", "\n", "Transformed text vector is \n", "[[1 0 1 1]\n", " [1 1 0 1]\n", " [3 0 0 0]]\n", "\n", "Words for each feature:\n", "[u'hop', u'off', u'on', u'pop']\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.1**\n", "\n", "Using the critics dataframe, compute a pair of numerical X, Y arrays where:\n", " \n", " * X is a (nreview, nwords) array. Each row corresponds to a bag-of-words representation for a single review. This will be the *input* to your model.\n", " * Y is a nreview-element 1/0 array, encoding whether a review is Fresh (1) or Rotten (0). This is the desired *output* from your model.\n", " \n", "Make sure to remove items with no review text" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#hint: Consult the scikit-learn documentation to\n", "# learn about what these classes do do\n", "from sklearn.cross_validation import train_test_split\n", "from sklearn.naive_bayes import MultinomialNB\n", "\n", "\"\"\"\n", "Function\n", "--------\n", "make_xy\n", "\n", "Build a bag-of-words training set for the review data\n", "\n", "Parameters\n", "-----------\n", "critics : Pandas DataFrame\n", " The review data from above\n", " \n", "vectorizer : CountVectorizer object (optional)\n", " A CountVectorizer object to use. If None,\n", " then create and fit a new CountVectorizer.\n", " Otherwise, re-fit the provided CountVectorizer\n", " using the critics data\n", " \n", "Returns\n", "-------\n", "X : numpy array (dims: nreview, nwords)\n", " Bag-of-words representation for each review.\n", "Y : numpy array (dims: nreview)\n", " 1/0 array. 1 = fresh review, 0 = rotten review\n", "\n", "Examples\n", "--------\n", "X, Y = make_xy(critics)\n", "\"\"\"\n", "def make_xy(critics, vectorizer=None):\n", " #Your code here \n", " if vectorizer is None:\n", " vectorizer = CountVectorizer()\n", " X = vectorizer.fit_transform(critics.quote)\n", " X = X.tocsc() # some versions of sklearn return COO format\n", " Y = (critics.fresh == 'fresh').values.astype(np.int)\n", " return X, Y" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "X, Y = make_xy(critics)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "**3.2** Next, randomly split the data into two groups: a\n", "training set and a validation set. \n", "\n", "Use the training set to train a MultinomialNB classifier,\n", "and print the accuracy of this model on the validation set\n", "\n", "**Hint**\n", "You can use train_test_split to split up the training data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "xtrain, xtest, ytrain, ytest = train_test_split(X, Y)\n", "clf = MultinomialNB().fit(xtrain, ytrain)\n", "\n", "print \"Accuracy: %0.2f%%\" % (100 * clf.score(xtest, ytest))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 77.15%\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.3:**\n", "\n", "We say a model is **overfit** if it performs better on the training data than on the test data. Is this model overfit? If so, how much more accurate is the model on the training data compared to the test data?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Your code here. Print the accuracy on the test and training dataset\n", "training_accuracy = clf.score(xtrain, ytrain)\n", "test_accuracy = clf.score(xtest, ytest)\n", "\n", "print \"Accuracy on training data: %0.2f\" % (training_accuracy)\n", "print \"Accuracy on test data: %0.2f\" % (test_accuracy)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy on training data: 0.90\n", "Accuracy on test data: 0.77\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Interpret these numbers in a few sentences here*\n", "\n", "**Answer** *Some overfitting seems to be happening here, since the error rate on the test data (23%) is more than twice as large as the error rate on the training data (10%). It's possible (though unlikely) that the accuracy difference is a product of chance, and not a symptom of overfitting. This could be tested with cross-validation, by repeatedly fitting and scoring the classifier on different train/test splits. If the performance on the training data is consistently better than the test data, then overfitting has occured. This is the case here.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.4: Model Calibration**\n", "\n", "Bayesian models like the Naive Bayes classifier have the nice property that they compute probabilities of a particular classification -- the predict_proba and predict_log_proba methods of MultinomialNB compute these probabilities. \n", "\n", "Being the respectable Bayesian that you are, you should always assess whether these probabilities are **calibrated** -- that is, whether a prediction made with a confidence of x% is correct approximately x% of the time.\n", "\n", "Let's make a plot to assess model calibration. Schematically, we want something like this:\n", "\n", "\n", "\n", "In words, we want to:\n", "\n", "* Take a collection of examples, and compute the freshness probability for each using clf.predict_proba\n", "* Gather examples into bins of similar freshness probability (the diagram shows 5 groups -- you should use something closer to 20)\n", "* For each bin, count the number of examples in that bin, and compute the fraction of examples in the bin which are fresh\n", "* In the upper plot, graph the expected P(Fresh) (x axis) and observed freshness fraction (Y axis). Estimate the uncertainty in observed freshness fraction $F$ via the [equation](http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval) $\\sigma = \\sqrt{F (1-F) / N}$\n", "* Overplot the line y=x. This is the trend we would expect if the model is calibrated\n", "* In the lower plot, show the number of examples in each bin\n", "\n", "**Hints**\n", "\n", "The output of clf.predict_proba(X) is a (N example, 2) array. The first column gives the probability $P(Y=0)$ or $P(Rotten)$, and the second gives $P(Y=1)$ or $P(Fresh)$.\n", "\n", "The above image is just a guideline -- feel free to explore other options!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "calibration_plot\n", "\n", "Builds a plot like the one above, from a classifier and review data\n", "\n", "Inputs\n", "-------\n", "clf : Classifier object\n", " A MultinomialNB classifier\n", "X : (Nexample, Nfeature) array\n", " The bag-of-words data\n", "Y : (Nexample) integer array\n", " 1 if a review is Fresh\n", "\"\"\" \n", "#your code here\n", "\n", "def calibration_plot(clf, xtest, ytest):\n", " prob = clf.predict_proba(xtest)[:, 1]\n", " outcome = ytest\n", " data = pd.DataFrame(dict(prob=prob, outcome=outcome))\n", "\n", " #group outcomes into bins of similar probability\n", " bins = np.linspace(0, 1, 20)\n", " cuts = pd.cut(prob, bins)\n", " binwidth = bins[1] - bins[0]\n", " \n", " #freshness ratio and number of examples in each bin\n", " cal = data.groupby(cuts).outcome.agg(['mean', 'count'])\n", " cal['pmid'] = (bins[:-1] + bins[1:]) / 2\n", " cal['sig'] = np.sqrt(cal.pmid * (1 - cal.pmid) / cal['count'])\n", " \n", " #the calibration plot\n", " ax = plt.subplot2grid((3, 1), (0, 0), rowspan=2)\n", " p = plt.errorbar(cal.pmid, cal['mean'], cal['sig'])\n", " plt.plot(cal.pmid, cal.pmid, linestyle='--', lw=1, color='k')\n", " plt.ylabel(\"Empirical P(Fresh)\")\n", " remove_border(ax)\n", " \n", " #the distribution of P(fresh)\n", " ax = plt.subplot2grid((3, 1), (2, 0), sharex=ax)\n", " \n", " plt.bar(left=cal.pmid - binwidth / 2, height=cal['count'],\n", " width=.95 * (bins[1] - bins[0]),\n", " fc=p[0].get_color())\n", " \n", " plt.xlabel(\"Predicted P(Fresh)\")\n", " remove_border()\n", " plt.ylabel(\"Number\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "calibration_plot(clf, xtest, ytest)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.5** We might say a model is *over-confident* if the freshness fraction is usually closer to 0.5 than expected (that is, there is more uncertainty than the model predicted). Likewise, a model is *under-confident* if the probabilities are usually further away from 0.5. Is this model generally over- or under-confident? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *This model is over-confident. For a properly calibrated model, we would expect ~10% of the P(Fresh)~0.1 reviews to actually be fresh. However, the actual freshness rate is closer to 30%. Likewise, for reviews where P(Fresh) ~0.9, the actuall freshness fraction is closer to 0.7. In other words, there is more uncertainty in the outcome than implied by the model.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cross Validation\n", "\n", "Our classifier has a few free parameters. The two most important are:\n", "\n", " 1. The min_df keyword in CountVectorizer, which will ignore words which appear in fewer than min_df fraction of reviews. Words that appear only once or twice can lead to overfitting, since words which occur only a few times might correlate very well with Fresh/Rotten reviews by chance in the training dataset.\n", " \n", " 2. The [alpha keyword](http://scikit-learn.org/stable/modules/naive_bayes.html#multinomial-naive-bayes) in the Bayesian classifier is a \"smoothing parameter\" -- increasing the value decreases the sensitivity to any single feature, and tends to pull prediction probabilities closer to 50%. \n", "\n", "As discussed in lecture and HW2, a common technique for choosing appropriate values for these parameters is **cross-validation**. Let's choose good parameters by maximizing the cross-validated log-likelihood.\n", "\n", "**3.6** Using clf.predict_logproba, write a function that computes the log-likelihood of a dataset" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Function\n", "--------\n", "log_likelihood\n", "\n", "Compute the log likelihood of a dataset according to \n", "a bayesian classifier. \n", "The Log Likelihood is defined by\n", "\n", "L = Sum_fresh(logP(fresh)) + Sum_rotten(logP(rotten))\n", "\n", "Where Sum_fresh indicates a sum over all fresh reviews, \n", "and Sum_rotten indicates a sum over rotten reviews\n", " \n", "Parameters\n", "----------\n", "clf : Bayesian classifier\n", "x : (nexample, nfeature) array\n", " The input data\n", "y : (nexample) integer array\n", " Whether each review is Fresh\n", "\"\"\"\n", "#your code here\n", "\n", "def log_likelihood(clf, x, y):\n", " prob = clf.predict_log_proba(x)\n", " rotten = y == 0\n", " fresh = ~rotten\n", " return prob[rotten, 0].sum() + prob[fresh, 1].sum()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a function to estimate the cross-validated value of a scoring function, given a classifier and data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import KFold\n", "\n", "def cv_score(clf, x, y, score_func):\n", " \"\"\"\n", " Uses 5-fold cross validation to estimate a score of a classifier\n", " \n", " Inputs\n", " ------\n", " clf : Classifier object\n", " x : Input feature vector\n", " y : Input class labels\n", " score_func : Function like log_likelihood, that takes (clf, x, y) as input,\n", " and returns a score\n", " \n", " Returns\n", " -------\n", " The average score obtained by randomly splitting (x, y) into training and \n", " test sets, fitting on the training set, and evaluating score_func on the test set\n", " \n", " Examples\n", " cv_score(clf, x, y, log_likelihood)\n", " \"\"\"\n", " result = 0\n", " nfold = 5\n", " for train, test in KFold(y.size, nfold): # split data into train/test groups, 5 times\n", " clf.fit(x[train], y[train]) # fit\n", " result += score_func(clf, x[test], y[test]) # evaluate score function on held-out data\n", " return result / nfold # average" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.7**\n", "\n", "Fill in the remaining code in this block, to loop over many values of alpha and min_df to determine\n", "which settings are \"best\" in the sense of maximizing the cross-validated log-likelihood" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#the grid of parameters to search over\n", "alphas = [0, .1, 1, 5, 10, 50]\n", "min_dfs = [1e-5, 1e-4, 1e-3, 1e-2, 1e-1]\n", "\n", "#Find the best value for alpha and min_df, and the best classifier\n", "best_alpha = None\n", "best_min_df = None\n", "max_loglike = -np.inf\n", "\n", "for alpha in alphas:\n", " for min_df in min_dfs: \n", " vectorizer = CountVectorizer(min_df = min_df) \n", " X, Y = make_xy(critics, vectorizer)\n", " \n", " #your code here\n", " clf = MultinomialNB(alpha=alpha)\n", " loglike = cv_score(clf, X, Y, log_likelihood)\n", "\n", " if loglike > max_loglike:\n", " max_loglike = loglike\n", " best_alpha, best_min_df = alpha, min_df" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"alpha: %f\" % best_alpha\n", "print \"min_df: %f\" % best_min_df" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "alpha: 5.000000\n", "min_df: 0.001000\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.8** Now that you've determined values for alpha and min_df that optimize the cross-validated log-likelihood, repeat the steps in 3.1, 3.2, and 3.4 to train a final classifier with these parameters, re-evaluate the accuracy, and draw a new calibration plot." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "\n", "vectorizer = CountVectorizer(min_df=best_min_df)\n", "X, Y = make_xy(critics, vectorizer)\n", "xtrain, xtest, ytrain, ytest = train_test_split(X, Y)\n", "\n", "clf = MultinomialNB(alpha=best_alpha).fit(xtrain, ytrain)\n", "\n", "calibration_plot(clf, xtest, ytest)\n", "\n", "# Your code here. Print the accuracy on the test and training dataset\n", "training_accuracy = clf.score(xtrain, ytrain)\n", "test_accuracy = clf.score(xtest, ytest)\n", "\n", "print \"Accuracy on training data: %0.2f\" % (training_accuracy)\n", "print \"Accuracy on test data: %0.2f\" % (test_accuracy)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy on training data: 0.78\n", "Accuracy on test data: 0.74\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nYAH0ej3Ky8sBAIcPH8awYcMwZswY/Pjjj/j8889x6NAhvPDCC9J133jjDezcuROff/45vvnmGxQV\nFWHv3r1mjwA6ODgAuPXOGgDs3bsXffr0qbNufUljVVUVkpKSsGbNGhw7dgyPPPIIoqOjkZeXh//9\n3//F0aNHMXXqVIwaNUp67Lt8+XJs2bIFGzduxMmTJ7Fx40YEBgYatfVf//VfCAoKQlFREebOnYu4\nuDh8++23Rm337dsXe/bsMeueicgGBBGRhaZOnSpGjhwpff/uu++Em5ubmDhxohBCiAULFgiFQiHO\nnz8v1fnmm2+EUqkUlZWVRtd6/PHHxYcffiiEEGLSpEli6NChRsdffPFFIZPJpO+pqalCqVRK30ND\nQ8WkSZPqjbVz585i2bJlRmXPPfecmDZtmlFZUVGRkMlk4tdffxVXrlwRDg4OYsOGDdLxq1evioce\nekhER0fX21Zubq6QyWTiwoULQgghLly4IEaPHi1cXV2lv4tevXqJd955p87zlEql0efMmTMiNTVV\nyGQycfDgQan+yZMnhVwuF2fOnDG6TkREhHj11VeFEELExsaKwYMH1xurj4+PmDx5slGZv7+/SEpK\nMipbtmyZ8PX1rfc6RNQy8B07ImqUr7/+GiqVCjdv3sSNGzcwZswYrFixQjqu1Wrh7u4ufS8sLMT1\n69eNyoBbo1GlpaUAgGPHjiEiIsLoeEhICD7++ON647h7pM0UhYWFOHXqFDZu3CiVCSEgk8lw6tQp\nODo64rfffkO/fv2k487OzujevbtJ1+/cuTMA4Nq1awgICEBWVpZ031euXIFSqazzvN27d6NDhw7S\nd09PTwCAvb09Hn/8can84MGDEELgscceMzq/uroagwcPBnBrgsuQIUMQEBCAoUOHYsSIERg+fLg0\n4iiTydCjRw+j8z09PfHrr78albm4uKCiosKk+yYi22FiR0SNMmDAAPzP//wPFAoFPD09jd5fA24l\nQneqra2Fh4cH8vPz77nW7dmh1proIITAn/70J8yePfueY56enjh+/Hi955li9+7dcHNzg7u7+z1J\nnKurK65evVrneb6+vkaTJ25zcHAw+rupra2FTCbDgQMHoFAojOq2b98eANCzZ0/885//xN///nd8\n8803mDp1KoKCgrBjxw7pWnefK5PJpMkZt12+fBkPPfSQSfdNRLbDxI6IGqV9+/bo0qWLyfWDg4Nh\nMBggk8nqnWHZrVs37Nu3z6js7ne+7tazZ0/s3LkT06ZNq/N4u3btUFNTY1TWq1cvHDlypN74u3bt\nCoVCgX379hmNvh05cgT+/v4NxgPUn6ABgJ+fH06fPn3fazSkZ8+eEEKgvLwcYWFh9dZTKpUYN24c\nxo0bh6ioKISEhODUqVPw8/Mzua3Tp08jICCgUfESUfPj5Akisqrw8HA8+eSTiIiIwNdff42ysjLs\n27cPCxYskEbxYmNjsXPnTnzwwQc4ceIE1qxZI820rc/8+fORlZWFd955B8XFxTh69ChSUlJQWVkJ\n4NZj0b179+LcuXO4cOECAGDu3Ln4/vvv8corr6CoqAgnT57EV199hZdffhnArYRo2rRpmDt3Lnbu\n3ImjR4/ihRdeuGc0yxJPPfUU9u/f36hrBAQE4Nlnn0VUVBQ2b96M0tJSHDhwAEuXLsUXX3wBAEhO\nTkZmZiaOHTuGkydPYv369XB1dYVWq633ukKIe0Ylv//+e+h0ukbFS0TNj4kdEVnsfovb1nc8Ozsb\ngwYNwp/+9CcEBgYiMjISJ06cgJeXFwDgiSeewMcff4zVq1cjKCgIW7ZsQUJCwj3XuvP78OHD8cUX\nX2D79u3o1asXwsLCpAV/ASAxMRE///wzunbtCg8PDwBA9+7dsXfvXvzzn/9EWFgYHn/8cbz11lvQ\naDTSdZcuXYqBAwdi7NixGDx4MHr06GFSgnO/x8njxo3DqVOncPLkSZPPq+tYamoqoqOjERcXh27d\numHUqFHIz8+XRhhdXFzw5z//GU888QSCg4Px448/Yvv27Q2uAXh3vxkMBhQWFmLixIkN3hMR2Z5M\nmPqyCBERNakpU6bAx8cH7733nq1DadCyZcuwa9cubNu2zdahENF9MLEjIrKR0tJShISE4OTJk9LE\nkZamuroafn5++PLLL41m5BJRy8TEjoiIiKiN4Dt2RERERG0EEzsiIiKiNoKJHREREVEbwcSOiIiI\nqI1gYkdERETURjCxIyIiImojmNgRERERtRH/B/9vDL5NqXsoAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.9** Discuss the various ways in which Cross-Validation has affected the model. Is the new model more or less accurate? Is overfitting better or worse? Is the model more or less calibrated?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *The new model is slightly less accurate on the test data (74% vs 77% on the original model). However, it is both better calibrated and less over-fit than before. In other words, while the classification accuracy is slightly worse, the probabilities themselves are more accurate. The model is still slightly over-confident when making low P(Fresh) predictions. However, the calibration plot shows the model is usually within 1 error bar of the expected performance where P(Fresh) >= 0.2. Finally, the new model makes less-conclusive predictions on average -- the histogram in the calibration plot is more uniformly distributed, with fewer predictions clustered around P(Fresh) = 0 or 1.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*To think about/play with, but not to hand in: What would happen if you tried this again using a function besides the log-likelihood -- for example, the classification accuracy?*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part 4: Interpretation. What words best predict a fresh or rotten review?\n", "\n", "**4.1**\n", "Using your classifier and the vectorizer.get_feature_names method, determine which words best predict a positive or negative review. Print the 10 words\n", "that best predict a \"fresh\" review, and the 10 words that best predict a \"rotten\" review. For each word, what is the model's probability of freshness if the word appears one time?\n", "\n", "#### Hints\n", "\n", "* Try computing the classification probability for a feature vector which consists of all 0s, except for a single 1. What does this probability refer to?\n", "\n", "* np.eye generates a matrix where the ith row is all 0s, except for the ith column which is 1." ] }, { "cell_type": "code", "collapsed": false, "input": [ "## Your code here\n", "\n", "words = np.array(vectorizer.get_feature_names())\n", "\n", "x = np.eye(xtest.shape[1])\n", "probs = clf.predict_log_proba(x)[:, 0]\n", "ind = np.argsort(probs)\n", "\n", "good_words = words[ind[:10]]\n", "bad_words = words[ind[-10:]]\n", "\n", "good_prob = probs[ind[:10]]\n", "bad_prob = probs[ind[-10:]]\n", "\n", "print \"Good words\\t P(fresh | word)\"\n", "for w, p in zip(good_words, good_prob):\n", " print \"%20s\" % w, \"%0.2f\" % (1 - np.exp(p))\n", " \n", "print \"Bad words\\t P(fresh | word)\"\n", "for w, p in zip(bad_words, bad_prob):\n", " print \"%20s\" % w, \"%0.2f\" % (1 - np.exp(p))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Good words\t P(fresh | word)\n", " masterpiece 0.90\n", " delight 0.89\n", " remarkable 0.89\n", " touching 0.87\n", " perfect 0.87\n", " rare 0.86\n", " witty 0.86\n", " superb 0.86\n", " captures 0.86\n", " delightful 0.85\n", "Bad words\t P(fresh | word)\n", " worst 0.21\n", " dull 0.21\n", " disappointment 0.20\n", " disappointing 0.20\n", " unfunny 0.20\n", " bland 0.18\n", " uninspired 0.17\n", " pointless 0.17\n", " lame 0.13\n", " unfortunately 0.12\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.2**\n", "\n", "One of the best sources for inspiration when trying to improve a model is to look at examples where the model performs poorly. \n", "\n", "Find 5 fresh and rotten reviews where your model performs particularly poorly. Print each review." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Your code here\n", "x, y = make_xy(critics, vectorizer)\n", "\n", "prob = clf.predict_proba(x)[:, 0]\n", "predict = clf.predict(x)\n", "\n", "bad_rotten = np.argsort(prob[y == 0])[:5]\n", "bad_fresh = np.argsort(prob[y == 1])[-5:]\n", "\n", "print \"Mis-predicted Rotten quotes\"\n", "print '---------------------------'\n", "for row in bad_rotten:\n", " print critics[y == 0].quote.irow(row)\n", " print\n", "\n", "print \"Mis-predicted Fresh quotes\"\n", "print '--------------------------'\n", "for row in bad_fresh:\n", " print critics[y == 1].quote.irow(row)\n", " print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Mis-predicted Rotten quotes\n", "---------------------------\n", "It survives today only as an unusually pure example of a typical 50s art-film strategy: the attempt to make the most modern and most popular of art forms acceptable to the intelligentsia by forcing it into an arcane, antique mold.\n", "\n", "The Waterboy is arguably Sandler's most enjoyable motion picture to date, but it's still far from a masterpiece.\n", "\n", "Pale Rider does nothing to disprove the wisdom that this genre is best left to the revival houses. A double feature of Shane and Eastwood's High Plains Drifter will do just fine, thanks.\n", "\n", "It's a sad day when an actor who's totally, beautifully in touch with his dark side finds himself stuck in a movie that's scared of its own shadow.\n", "\n", "Walken is one of the few undeniably charismatic male villains of recent years; he can generate a snakelike charm that makes his worst characters the most memorable, and here he operates on pure style.\n", "\n", "Mis-predicted Fresh quotes\n", "--------------------------\n", "The gangland plot is flimsy (bad guy Peter Greene wears too much eyeliner), and the jokes are erratic, but it's a far better showcase for Carrey's comic-from-Uranus talent than Ace Ventura.\n", "\n", "It's a one-joke movie, a funhouse ride, the cinematic equivalent of having a rubber spider thrown in your lap. But it doesn't matter if you reject the wispy script or the plot, which has as much substance as a spider's web; you'll jump every time.\n", "\n", "There's too much talent and too strong a story to mess it up. There was potential for more here, but this incarnation is nothing to be ashamed of, and some of the actors answer the bell.\n", "\n", "This tough-to-peg whodunit keeps you going for two hours, despite a few James Bond-ish (or Jane Bond-ish) turns that play less preposterously than you might assume were they to be divulged.\n", "\n", "Some of the gags don't work, but fewer than in any previous Brooks film that I've seen, and when the jokes are meant to be bad, they are riotously poor. What more can one ask of Mel Brooks?\n", "\n" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.3** What do you notice about these mis-predictions? Naive Bayes classifiers assume that every word affects the probability independently of other words. In what way is this a bad assumption? In your answer, report your classifier's Freshness probability for the review \"This movie is not remarkable, touching, or superb in any way\"." ] }, { "cell_type": "code", "collapsed": false, "input": [ "clf.predict_proba(vectorizer.transform(['This movie is not remarkable, touching, or superb in any way']))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "array([[ 0.01755082, 0.98244918]])" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer** *Many mis-predictions seem due to the fact that the quotes use more ambivalent language -- quotes along the lines of \"this should have been a good movie, but it wasn't\". Words like \"but\", \"not\", etc. act to negate the sentiment of words. However, because Naive Bayes treats each word separately, it isn't able to capture these kind of word interactions. Because the quote \"this movie is not remarkable, touching, or superb in any way\" contains typically positive words like remarkabke/touching/superb, the classifier gives it P(Fresh)=0.98.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.4**\n", "If this was your final project, what are 3 things you would try in order to build a more effective review classifier? What other exploratory or explanatory visualizations do you think might be helpful?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many things worth trying. Some examples:\n", "\n", "1. You could try to build a NB model where the features are word pairs instead of words. This would be smart enough to realize that \"not good\" and \"so good\" mean very different things. This technique doesn't scale very well, since these features are much more sparse (and hence harder to detect repeatable patterns within).\n", "2. You could try a model besides NB, that would allow for interactions between words -- for example, a Random Forest classifier.\n", "3. You could consider adding supplemental features -- information about genre, director, cast, etc.\n", "4. You could build a visualization that prints word reviews, and visually encodes each word with size or color to indicate how that word contributes to P(Fresh). For example, really bad words could show up as big and red, good words as big and green, common words as small and grey, etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How to Submit\n", "\n", "To submit your homework, create a folder named lastname_firstinitial_hw3 and place this notebook file in the folder. Double check that this file is still called HW3.ipynb, and that it contains your solutions. Please do **not** include the critics.csv data file, if you created one. Compress the folder (please use .zip compression) and submit to the CS109 dropbox in the appropriate folder. If we cannot access your work because these directions are not followed correctly, we will not grade your work.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "*css tweaks in this cell*\n", "" ] } ], "metadata": {} } ] }