Skip to content

Instantly share code, notes, and snippets.

@glamp
Last active September 28, 2017 00:58
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save glamp/20a18d52c539b87de2af to your computer and use it in GitHub Desktop.
Save glamp/20a18d52c539b87de2af to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "Python Beer Recommender"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Building a Recommendation System in Python\n",
"============================\n",
"> In this tutorial we'll show you how to build a recommendation system using pandas, scikit-learn, and numpy. We've provided a dataset of beer reviews which we'll use for building our product recommender, but this use case could be easily substituted with a different product."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"import numpy as np\n",
"import pylab as pl"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2><a href=\"https://s3.amazonaws.com/demo-datasets/beer_reviews.tar.gz\">Download the data</a></h2>\n",
"<p>Grab the dataset from our data demos bucket on S3, then decompress it. It will create a directory called ~/Downloads/beer_reviews.</p>"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%sh\n",
"tar xvf ~/Downloads/beer_reviews.tar.gz"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"x beer_reviews/\n",
"x beer_reviews/beer_reviews.csv\n",
"x beer_reviews/load_into_postgres.sql\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# substitute your name here. If you're on windows you'll need a different filepath\n",
"df = pd.read_csv(\"/Users/glamp/Downloads/beer_reviews/beer_reviews.csv\")\n",
"df.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>brewery_id</th>\n",
" <th>brewery_name</th>\n",
" <th>review_time</th>\n",
" <th>review_overall</th>\n",
" <th>review_aroma</th>\n",
" <th>review_appearance</th>\n",
" <th>review_profilename</th>\n",
" <th>beer_style</th>\n",
" <th>review_palate</th>\n",
" <th>review_taste</th>\n",
" <th>beer_name</th>\n",
" <th>beer_abv</th>\n",
" <th>beer_beerid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 10325</td>\n",
" <td> Vecchio Birraio</td>\n",
" <td> 1234817823</td>\n",
" <td> 1.5</td>\n",
" <td> 2.0</td>\n",
" <td> 2.5</td>\n",
" <td> stcules</td>\n",
" <td> Hefeweizen</td>\n",
" <td> 1.5</td>\n",
" <td> 1.5</td>\n",
" <td> Sausa Weizen</td>\n",
" <td> 5.0</td>\n",
" <td> 47986</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 10325</td>\n",
" <td> Vecchio Birraio</td>\n",
" <td> 1235915097</td>\n",
" <td> 3.0</td>\n",
" <td> 2.5</td>\n",
" <td> 3.0</td>\n",
" <td> stcules</td>\n",
" <td> English Strong Ale</td>\n",
" <td> 3.0</td>\n",
" <td> 3.0</td>\n",
" <td> Red Moon</td>\n",
" <td> 6.2</td>\n",
" <td> 48213</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 10325</td>\n",
" <td> Vecchio Birraio</td>\n",
" <td> 1235916604</td>\n",
" <td> 3.0</td>\n",
" <td> 2.5</td>\n",
" <td> 3.0</td>\n",
" <td> stcules</td>\n",
" <td> Foreign / Export Stout</td>\n",
" <td> 3.0</td>\n",
" <td> 3.0</td>\n",
" <td> Black Horse Black Beer</td>\n",
" <td> 6.5</td>\n",
" <td> 48215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 10325</td>\n",
" <td> Vecchio Birraio</td>\n",
" <td> 1234725145</td>\n",
" <td> 3.0</td>\n",
" <td> 3.0</td>\n",
" <td> 3.5</td>\n",
" <td> stcules</td>\n",
" <td> German Pilsener</td>\n",
" <td> 2.5</td>\n",
" <td> 3.0</td>\n",
" <td> Sausa Pils</td>\n",
" <td> 5.0</td>\n",
" <td> 47969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 1075</td>\n",
" <td> Caldera Brewing Company</td>\n",
" <td> 1293735206</td>\n",
" <td> 4.0</td>\n",
" <td> 4.5</td>\n",
" <td> 4.0</td>\n",
" <td> johnmichaelsen</td>\n",
" <td> American Double / Imperial IPA</td>\n",
" <td> 4.0</td>\n",
" <td> 4.5</td>\n",
" <td> Cauldron DIPA</td>\n",
" <td> 7.7</td>\n",
" <td> 64883</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 35,
"text": [
" brewery_id brewery_name review_time review_overall review_aroma \\\n",
"0 10325 Vecchio Birraio 1234817823 1.5 2.0 \n",
"1 10325 Vecchio Birraio 1235915097 3.0 2.5 \n",
"2 10325 Vecchio Birraio 1235916604 3.0 2.5 \n",
"3 10325 Vecchio Birraio 1234725145 3.0 3.0 \n",
"4 1075 Caldera Brewing Company 1293735206 4.0 4.5 \n",
"\n",
" review_appearance review_profilename beer_style \\\n",
"0 2.5 stcules Hefeweizen \n",
"1 3.0 stcules English Strong Ale \n",
"2 3.0 stcules Foreign / Export Stout \n",
"3 3.5 stcules German Pilsener \n",
"4 4.0 johnmichaelsen American Double / Imperial IPA \n",
"\n",
" review_palate review_taste beer_name beer_abv beer_beerid \n",
"0 1.5 1.5 Sausa Weizen 5.0 47986 \n",
"1 3.0 3.0 Red Moon 6.2 48213 \n",
"2 3.0 3.0 Black Horse Black Beer 6.5 48215 \n",
"3 2.5 3.0 Sausa Pils 5.0 47969 \n",
"4 4.0 4.5 Cauldron DIPA 7.7 64883 "
]
}
],
"prompt_number": 35
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Finding People Who Have Reviewed 2 Beers"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"beer_1, beer_2 = \"Dale's Pale Ale\", \"Fat Tire Amber Ale\"\n",
"\n",
"beer_1_reviewers = df[df.beer_name==beer_1].review_profilename.unique()\n",
"beer_2_reviewers = df[df.beer_name==beer_2].review_profilename.unique()\n",
"common_reviewers = set(beer_1_reviewers).intersection(beer_2_reviewers)\n",
"print \"Users in the sameset: %d\" % len(common_reviewers)\n",
"list(common_reviewers)[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Users in the sameset: 499\n"
]
},
{
"output_type": "pyout",
"prompt_number": 32,
"text": [
"['womencantsail',\n",
" 'Marty30',\n",
" 'Winter',\n",
" 'Lothore',\n",
" 'bump8628',\n",
" 'gford217',\n",
" 'lackenhauser',\n",
" 'wspscott',\n",
" 'mjurney',\n",
" 'LiquidBread219']"
]
}
],
"prompt_number": 32
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Extracting Reviews"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_beer_reviews(beer, common_users):\n",
" mask = (df.review_profilename.isin(common_users)) & (df.beer_name==beer)\n",
" reviews = df[mask].sort('review_profilename')\n",
" reviews = reviews[reviews.review_profilename.duplicated()==False]\n",
" return reviews\n",
"beer_1_reviews = get_beer_reviews(beer_1, common_reviewers)\n",
"beer_2_reviews = get_beer_reviews(beer_2, common_reviewers)\n",
"\n",
"cols = ['beer_name', 'review_profilename', 'review_overall', 'review_aroma', 'review_palate', 'review_taste']\n",
"beer_2_reviews[cols].head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>beer_name</th>\n",
" <th>review_profilename</th>\n",
" <th>review_overall</th>\n",
" <th>review_aroma</th>\n",
" <th>review_palate</th>\n",
" <th>review_taste</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>202456</th>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> ATPete</td>\n",
" <td> 4.5</td>\n",
" <td> 4.0</td>\n",
" <td> 4.0</td>\n",
" <td> 4.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>201458</th>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> AdamBear</td>\n",
" <td> 3.5</td>\n",
" <td> 2.5</td>\n",
" <td> 4.5</td>\n",
" <td> 3.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>201886</th>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> AlCaponeJunior</td>\n",
" <td> 2.0</td>\n",
" <td> 3.0</td>\n",
" <td> 3.5</td>\n",
" <td> 3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>202481</th>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> AltBock</td>\n",
" <td> 4.0</td>\n",
" <td> 3.0</td>\n",
" <td> 3.0</td>\n",
" <td> 3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>201803</th>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> Andreji</td>\n",
" <td> 4.0</td>\n",
" <td> 4.5</td>\n",
" <td> 4.0</td>\n",
" <td> 4.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 13,
"text": [
" beer_name review_profilename review_overall review_aroma \\\n",
"202456 Fat Tire Amber Ale ATPete 4.5 4.0 \n",
"201458 Fat Tire Amber Ale AdamBear 3.5 2.5 \n",
"201886 Fat Tire Amber Ale AlCaponeJunior 2.0 3.0 \n",
"202481 Fat Tire Amber Ale AltBock 4.0 3.0 \n",
"201803 Fat Tire Amber Ale Andreji 4.0 4.5 \n",
"\n",
" review_palate review_taste \n",
"202456 4.0 4.5 \n",
"201458 4.5 3.5 \n",
"201886 3.5 3.0 \n",
"202481 3.0 3.0 \n",
"201803 4.0 4.0 "
]
}
],
"prompt_number": 13
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Calculating Distance"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# choose your own way to calculate distance\n",
"from sklearn.metrics.pairwise import euclidean_distances\n",
"from sklearn.metrics.pairwise import manhattan_distances\n",
"from scipy.stats.stats import pearsonr\n",
"\n",
"\n",
"ALL_FEATURES = ['review_overall', 'review_aroma', 'review_palate', 'review_taste']\n",
"def calculate_similarity(beer1, beer2):\n",
" # find common reviewers\n",
" beer_1_reviewers = df[df.beer_name==beer1].review_profilename.unique()\n",
" beer_2_reviewers = df[df.beer_name==beer2].review_profilename.unique()\n",
" common_reviewers = set(beer_1_reviewers).intersection(beer_2_reviewers)\n",
"\n",
" # get reviews\n",
" beer_1_reviews = get_beer_reviews(beer1, common_reviewers)\n",
" beer_2_reviews = get_beer_reviews(beer2, common_reviewers)\n",
" dists = []\n",
" for f in ALL_FEATURES:\n",
" dists.append(euclidean_distances(beer_1_reviews[f], beer_2_reviews[f])[0][0])\n",
" \n",
" return dists\n",
"\n",
"calculate_similarity(beer_1, beer_2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 38,
"text": [
"[17.592612085759182, 17.38533865071371, 16.454482671904334, 17.613914953808536]"
]
}
],
"prompt_number": 38
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Calculate the Similarity for a Set of Beers"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# calculate only a subset for the demo\n",
"beers = [\"Dale's Pale Ale\", \"Sierra Nevada Pale Ale\", \"Michelob Ultra\",\n",
" \"Natural Light\", \"Bud Light\", \"Fat Tire Amber Ale\", \"Coors Light\",\n",
" \"Blue Moon Belgian White\", \"60 Minute IPA\", \"Guinness Draught\"]\n",
"\n",
"# calculate everything for real production\n",
"# beers = df.beer_name.unique()\n",
"\n",
"simple_distances = []\n",
"for beer1 in beers:\n",
" print \"starting\", beer1\n",
" for beer2 in beers:\n",
" if beer1 != beer2:\n",
" row = [beer1, beer2] + calculate_similarity(beer1, beer2)\n",
" simple_distances.append(row)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"starting Dale's Pale Ale\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Sierra Nevada Pale Ale\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Michelob Ultra\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Natural Light\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Bud Light\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Fat Tire Amber Ale\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Coors Light\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Blue Moon Belgian White\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 60 Minute IPA\n",
"starting"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Guinness Draught\n"
]
}
],
"prompt_number": 40
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Inspect the Results"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cols = [\"beer1\", \"beer2\", \"overall_dist\", \"aroma_dist\", \"palate_dist\", \"taste_dist\"]\n",
"simple_distances = pd.DataFrame(simple_distances, columns=cols)\n",
"simple_distances.tail()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>beer1</th>\n",
" <th>beer2</th>\n",
" <th>overall_dist</th>\n",
" <th>aroma_dist</th>\n",
" <th>palate_dist</th>\n",
" <th>taste_dist</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>85</th>\n",
" <td> Guinness Draught</td>\n",
" <td> Bud Light</td>\n",
" <td> 44.260592</td>\n",
" <td> 42.520583</td>\n",
" <td> 45.825757</td>\n",
" <td> 44.452222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td> Guinness Draught</td>\n",
" <td> Fat Tire Amber Ale</td>\n",
" <td> 23.958297</td>\n",
" <td> 21.023796</td>\n",
" <td> 25.014996</td>\n",
" <td> 22.798026</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td> Guinness Draught</td>\n",
" <td> Coors Light</td>\n",
" <td> 41.237119</td>\n",
" <td> 38.823318</td>\n",
" <td> 43.508620</td>\n",
" <td> 40.620192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td> Guinness Draught</td>\n",
" <td> Blue Moon Belgian White</td>\n",
" <td> 27.147744</td>\n",
" <td> 22.477767</td>\n",
" <td> 25.806976</td>\n",
" <td> 23.727621</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td> Guinness Draught</td>\n",
" <td> 60 Minute IPA</td>\n",
" <td> 31.348844</td>\n",
" <td> 32.310989</td>\n",
" <td> 32.256782</td>\n",
" <td> 34.510868</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 15,
"text": [
" beer1 beer2 overall_dist aroma_dist \\\n",
"85 Guinness Draught Bud Light 44.260592 42.520583 \n",
"86 Guinness Draught Fat Tire Amber Ale 23.958297 21.023796 \n",
"87 Guinness Draught Coors Light 41.237119 38.823318 \n",
"88 Guinness Draught Blue Moon Belgian White 27.147744 22.477767 \n",
"89 Guinness Draught 60 Minute IPA 31.348844 32.310989 \n",
"\n",
" palate_dist taste_dist \n",
"85 45.825757 44.452222 \n",
"86 25.014996 22.798026 \n",
"87 43.508620 40.620192 \n",
"88 25.806976 23.727621 \n",
"89 32.256782 34.510868 "
]
}
],
"prompt_number": 15
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Allow the User to Customize the Weights"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def calc_distance(dists, beer1, beer2, weights):\n",
" mask = (dists.beer1==beer1) & (dists.beer2==beer2)\n",
" row = dists[mask]\n",
" row = row[['overall_dist', 'aroma_dist', 'palate_dist', 'taste_dist']]\n",
" dist = weights * row\n",
" return dist.sum(axis=1).tolist()[0]\n",
"\n",
"weights = [2, 1, 1, 1]\n",
"print calc_distance(simple_distances, \"Fat Tire Amber Ale\", \"Dale's Pale Ale\", weights)\n",
"print calc_distance(simple_distances, \"Fat Tire Amber Ale\", \"Michelob Ultra\", weights)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"86.6389604479\n",
"153.0466855\n"
]
}
],
"prompt_number": 34
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Find Similar Beers for Coors Light"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"my_beer = \"Coors Light\"\n",
"results = []\n",
"for b in beers:\n",
" if my_beer!=b:\n",
" results.append((my_beer, b, calc_distance(simple_distances, my_beer, b, weights)))\n",
"sorted(results, key=lambda x: x[2])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 17,
"text": [
"[('Coors Light', 'Natural Light', 69.52320122830363),\n",
" ('Coors Light', 'Michelob Ultra', 72.4303764655898),\n",
" ('Coors Light', 'Bud Light', 100.45382254092895),\n",
" ('Coors Light', 'Blue Moon Belgian White', 175.24657417286627),\n",
" ('Coors Light', 'Fat Tire Amber Ale', 176.31863930228485),\n",
" ('Coors Light', \"Dale's Pale Ale\", 181.20123311633913),\n",
" ('Coors Light', 'Guinness Draught', 205.42636799646337),\n",
" ('Coors Light', '60 Minute IPA', 233.40510433819486),\n",
" ('Coors Light', 'Sierra Nevada Pale Ale', 254.78216241090442)]"
]
}
],
"prompt_number": 17
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Wrap it in Yhat"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from yhat import Yhat, BaseModel\n",
"\n",
"class BeerRec(BaseModel):\n",
" \n",
" def transform(self, raw_data):\n",
" beer = raw_data['beer']\n",
" weights = raw_data.get(\"weights\", [1, 1, 1, 1])\n",
" # normalize the weights so they sum to 1.0\n",
" weights = [float(w) / sum(weights) for w in weights]\n",
" return (beer, weights)\n",
" \n",
" def predict(self, data):\n",
" beer, weights = data\n",
" results = []\n",
" for beer_cmp in self.beers:\n",
" if beer!=beer_cmp:\n",
" dist = calc_distance(self.simple_distances, beer, beer_cmp, weights)\n",
" results.append((beer, beer_cmp, dist))\n",
" return sorted(results, key=lambda x: x[2])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Deploy to Yhat"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"yh = Yhat(\"{USERNAME}\", \"{APIKEY}\")\n",
"br = BeerRec(simple_distances=simple_distances, beers=beers,\n",
" udfs=[calc_distance])\n",
"yh.deploy(\"PydataBeerRec\", br)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"uploading... "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"done!\n"
]
},
{
"output_type": "pyout",
"prompt_number": 20,
"text": [
"{u'modelname': u'PydataBeerRec', u'status': u'success', u'version': 1}"
]
}
],
"prompt_number": 20
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Test it Out"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"yh.predict(\"PydataBeerRec\", 1, {\"beer\": \"Coors Light\", \"weights\": [1, 1, 1, 1]})"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 24,
"text": [
"[[u'Coors Light', u'Natural Light', 13.10332],\n",
" [u'Coors Light', u'Michelob Ultra', 13.58854],\n",
" [u'Coors Light', u'Bud Light', 18.89981],\n",
" [u'Coors Light', u'Fat Tire Amber Ale', 35.31271],\n",
" [u'Coors Light', u'Blue Moon Belgian White', 35.50784],\n",
" [u'Coors Light', u\"Dale's Pale Ale\", 36.80674],\n",
" [u'Coors Light', u'Guinness Draught', 41.04731],\n",
" [u'Coors Light', u'60 Minute IPA', 47.50289],\n",
" [u'Coors Light', u'Sierra Nevada Pale Ale', 51.62802]]"
]
}
],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"yh.predict(\"PydataBeerRec\", 1, {\"beer\": \"Coors Light\", \"weights\": [2, 1, 0, 0]})"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 25,
"text": [
"[[u'Coors Light', u'Natural Light', 14.79369],\n",
" [u'Coors Light', u'Michelob Ultra', 15.81099],\n",
" [u'Coors Light', u'Bud Light', 21.75517],\n",
" [u'Coors Light', u'Blue Moon Belgian White', 34.41245],\n",
" [u'Coors Light', u'Fat Tire Amber Ale', 35.19777],\n",
" [u'Coors Light', u\"Dale's Pale Ale\", 35.41338],\n",
" [u'Coors Light', u'Guinness Draught', 40.43252],\n",
" [u'Coors Light', u'60 Minute IPA', 45.5498],\n",
" [u'Coors Light', u'Sierra Nevada Pale Ale', 49.73314]]"
]
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment