Skip to content

Instantly share code, notes, and snippets.

@pilipolio
Last active December 16, 2015 22:38
Show Gist options
  • Save pilipolio/5507926 to your computer and use it in GitHub Desktop.
Save pilipolio/5507926 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "AssociationRules"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Association rules\n",
"-----------------\n",
"\n",
"### Links :\n",
"\n",
" - [Levente's 4th tutorial](https://docs.google.com/a/we7.com/document/d/1rApss-GHpTA82wqMKzJos7xP9SozZgA4XHE-5tuO4E0) and further readings [one](http://michael.hahsler.net/research/association_rules/measures.html) and [two](http://www3.di.uminho.pt/~pja/ps/conviction.pdf).\n",
" - An APRIORI implementation on [Ferenc Bodon's homepage](http://www.cs.bme.hu/~bodon/en/apriori) pointed by Levente\n",
" - Another APRIORI [implementation and library](http://www.borgelt.net/apriori.html) also pointed by Levente \n",
" - The wikipedia page about [association rule learning](http://en.wikipedia.org/wiki/Association_rule_learning)\n",
" - [A tutorial about association rule learners](http://inf.abdn.ac.uk/~hnguyen/teaching/CS5553/prac05.php) with a basket-item dataset\n",
" - A torough tutorial about [association learning in python](http://aimotion.blogspot.co.uk/2013/01/machine-learning-and-data-mining.html)\n",
" - A [python framework for association rules](http://orange.biolab.si/)\n",
"\n",
"About matrix factorization and user recommendation prediction:\n",
"\n",
"- The netflix prize [Wikipedia page](http://en.wikipedia.org/wiki/Netflix_Prize)\n",
" - The [BellKor solution to the Netflix prize (2007)](http://www.netflixprize.com/assets/ProgressPrize2007_KorBell.pdf), [tutorial (2009)](http://www2.research.att.com/~volinsky/papers/ieeecomputer.pdf\u200e) and the [paper](http://public.research.att.com/~volinsky/netflix/BellKorICDM07.pdf)\n",
" - The [Gravity team solution (2007)](https://docs.google.com/a/we7.com/file/d/0BwsmmX4SxUXiWlFxNFFSbVdORmM/edit?usp=sharing)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!curl -O http://inf.abdn.ac.uk/~hnguyen/teaching/CS5553/marketbasket.csv "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" % Total % Received % Xferd Average Speed Time Time Time Current\r\n",
" Dload Upload Total Spent Left Speed\r\n",
"\r",
" 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 4 2818k 4 124k 0 0 123k 0 0:00:22 0:00:01 0:00:21 146k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 17 2818k 17 503k 0 0 251k 0 0:00:11 0:00:02 0:00:09 271k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 25 2818k 25 724k 0 0 241k 0 0:00:11 0:00:03 0:00:08 254k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 38 2818k 38 1085k 0 0 271k 0 0:00:10 0:00:04 0:00:06 281k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 54 2818k 54 1531k 0 0 305k 0 0:00:09 0:00:05 0:00:04 315k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 67 2818k 67 1900k 0 0 316k 0 0:00:08 0:00:06 0:00:02 355k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 77 2818k 77 2197k 0 0 313k 0 0:00:08 0:00:07 0:00:01 338k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
" 88 2818k 88 2496k 0 0 311k 0 0:00:09 0:00:08 0:00:01 354k"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
"100 2818k 100 2818k 0 0 314k 0 0:00:08 0:00:08 --:--:-- 348k\r\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!head -1 marketbasket.csv"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Basket ID, Hair Conditioner, Lemons, Standard coffee, Frozen Chicken Wings, 98pct. Fat Free Hamburger, Sugar Cookies, Onions, Deli Ham, Dishwasher Detergent, Beets, 40 Watt Lightbulb, Ice Cream, Cottage Cheese, Plain English Muffins, Strawberry Soda, Vanilla Ice Cream, Potato Chips, Strawberry Yogurt, Diet Soda, D Cell Batteries, Paper Towels, Mint Chocolate Bar, Salsa Dip, Buttered Popcorn, Cheese Crackers, Chocolate Bar, Rice Soup, Mouthwash, Sugar, Cheese Flavored Chips, Sweat Potatoes, Deodorant, Waffles, Decaf Coffee, Smoked Turkey Sliced, Screw Driver, Sesame Oil, Red Wine, 60 Watt Lightbulb, Cream Soda, Apple Fruit Roll, Noodle Soup, Ice Cream Sandwich, Soda Crackers, Lettuce, AA Cell Batteries, Honey Roasted Peanuts, Frozen Cheese Pizza, Tomato Soup, Manicotti, Toilet Bowl Cleaner, Liquid Laundry Detergent, Instant Rice, Green Pepper, Frozen Broccoli, Chardonnay Wine, Brown Sugar Grits, Canned Peas, Skin Moisturizer, Avocado Dip, Blueberry Muffins, Apple Cinnamon Waffles, Chablis Wine, Cantaloupe, Shrimp Cocktail Sauce, 100 Watt Lightbulb, Whole Green Beans, Turkey TV Dinner, Wash Towels, Dog Food, Cat Food, Frozen Sausage Pizza, Frosted Donuts, Shrimp, Summer Sausage, Plums, Mild Cheddar Cheese, Cream of Wheat, Fresh Lima Beans, Flavored Fruit Bars, Mushrooms, Flour, Plain Rye Bread, Jelly Filled Donuts, Apple Sauce, Hot Chicken Wings, Orange Juice, Strawberry Jam, Chocolate Chip Cookies, Vegetable Soup, Oats and Nuts Cereal, Fruit Roll, Corn Oil, Corn Flake Cereal, 75 Watt Lightbulb, Mushroom Pizza - Frozen, Sour Cream, Deli Salad, Deli Turkey, Glass Cleaner, Brown Sugar, English Muffins, Apple Soda, Strawberry Preserves, Pepperoni Pizza - Frozen, Plain Oatmeal, Beef Soup, Trash Bags, Corn Chips, Tangerines, Hot Dogs, Can Opener, Dried Apples, Grape Juice, Carrots, Frozen Shrimp, Grape Fruit Roll, Merlot Wine, Raisins, Cranberry Juice, Shampoo, Pancake Mix, Paper Plates, Bologna, 2pct. Milk, Daily Newspaper, Popcorn Salt, Frozen Cauliflower, Vanilla Wafers, Tomatoes, Vegetable Oil, Chicken Soup, Eggs, Canned Mixed Fruit, Raisin Pudding, Celery, Oatmeal, Hot Chocolate, Spaghetti, Napkins, Blueberry Waffles, White Bread, Grape Jelly, Cheese Spread, Steak TV Dinner, Fudge Cookies, Chicken Breast - Frozen, Diet Cola, Limes, Sharp Cheddar Cheese, Cabbage, Nasal Spray, Dried Apricots, Cola, Plastic Knives, Liquid Soap, Toothbrush, Cranberry Muffins, Peaches, Apples, Regular Hamburger, Chardonnay, Sunglasses, Turkey Noodle Soup, Frozen Carrots, Bananas, Sandwich Bags, C Cell Batteries, Import Beer, Hot Dog Buns, Pepper, Plain Bagels, Window Cleaner, Oranges, Microwave Popcorn, Toothpaste, Blueberry Bagels, Apple Jam, Whole Corn, Fruit Drink, Cauliflower, French Roast Coffee, Buttermilk, Beef Hot Dogs, Black-eyed Peas, Ground Beef, Peanut Butter Cookies, Strawberry Drink, Cinnamon Oatmeal, Pastry Snacks, Grape Jam, Mandarin Oranges, Mango Drink, Taco Salad, Pretzels, Plain Blueberry Muffins, Canned Tuna, Licorice, Garlic Bread, Roasted Chicken, Frozen Peas, Hamburger Buns, Multi-Grain Wheat Bread, Tissue, Rye Bread, Peach Shampoo, French Fries, Raspberry Fruit Roll, Sesame Crackers, Heavy Duty Cleaner, Ramen Noodles, Soft Tissue, Orange Flavored Fruit Bars, Cheese, Flathead Screwdriver, Polish Sausage, Apple Drink, Domestic Beer, Mixed Nuts, Chicken TV Dinner, Tissues, Garlic, Dried Fruit Mix, Cole Slaw, Donuts, Sliced Turkey, Sliced Chicken, Broccoli, Ranch Dip, Sponge, Frozen Corn, Paper Cups, Wheat Bread, Oven Cleaner, Tomato Sauce, Plastic Forks, Popcorn, Creamy Peanut Butter, Sweet Relish, Plain Muffins, Cheese Dip, Colby Cheese, Chicken Noodle Soup, Fingernail Clippers, Corned Beef, Lollipops, Plain White Bread, Blueberry Yogurt, Frozen Chicken Thighs, Mixed Vegetables, Souring Pads, Tuna Spread, Toilet Paper, White Wine, Columbian Coffee, Ravioli, White Zinfandel Wine, Matches, Strawberry Fruit Roll, Red Pepper, Whole Milk, Canned Beets, Graham Crackers, Scissors, Grape Flavored Fruit Bars, Muffins, Peas, Counter Cleaner, Creamed Corn, Baked Beans, Cream Cheese, Bubble Gum, Hair Brush, Grapefruit Juice, Chicken Legs, Regular Coffee, Apple Juice, Provolone Cheese, Canned Peaches, Plastic Spoons, Brown Sugar Oatmeal, Oven Mitt, BBQ Potato Chips, Cookies, Dandruff Shampoo, Aspirin, Sweet Potatoes, Canned Tomatoes, Chunky Peanut Butter, Wood Polish, Squash, Strawberry Waffles, Pancakes, Salt, Green Beans, Flavored Ice, Imported Beer, Grits, Apple Jelly, Beef Jerky, Potatoes, Small Eggs, Silver Cleaner\r\n"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!tail -1 marketbasket.csv"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"C698, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false\r\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"first_line = !tail -1 marketbasket.csv\n",
"number_of_cols = first_line[0].count(',')\n",
"print number_of_cols"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"303"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"bool_parser = lambda cell : cell == ' true'\n",
"converters = dict((col_index + 1,bool_parser) for col_index in xrange(number_of_cols))\n",
"market_basket = pd.read_csv('marketbasket.csv', index_col='Basket ID', converters=converters)\n",
"\n",
"# Saving it back\n",
"market_basket.save('market_basket_pandas.pd')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Reload it back\n",
"import pandas as pd\n",
"market_basket = pd.load('market_basket_pandas.pd')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<pre>\n",
"&ltclass 'pandas.core.frame.DataFrame'&gt\n",
"Index: 5 entries, C11867 to C2693\n",
"Columns: 303 entries, Hair Conditioner to Silver Cleaner\n",
"dtypes: bool(303)\n",
"</pre>"
],
"output_type": "pyout",
"prompt_number": 10,
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 5 entries, C11867 to C2693\n",
"Columns: 303 entries, Hair Conditioner to Silver Cleaner\n",
"dtypes: bool(303)"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.index[0:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 11,
"text": [
"Index([C11867, C5096, C4295, C2837, C2693, C3497, C2696, C1895, C9524, C9527], dtype=object)"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.columns[0:10]\n",
"market_basket.columns = pd.Index([name.strip() for name in market_basket.columns.values])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket['Flour'].head(5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": [
"Basket ID\n",
"C11867 False\n",
"C5096 False\n",
"C4295 False\n",
"C2837 False\n",
"C2693 False\n",
"Name: Flour, dtype: bool"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.ix['C11867'].head(5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 14,
"text": [
"Hair Conditioner False\n",
"Lemons False\n",
"Standard coffee False\n",
"Frozen Chicken Wings False\n",
"98pct. Fat Free Hamburger False\n",
"Name: C11867, dtype: bool"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.sum(axis=0)\n",
"market_basket.sum(axis=0).hist(bins=20)\n",
"plt.title(\"Distribution of items popularities\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket.sum(axis=1)\n",
"market_basket.sum(axis=1).hist(bins=20, log=True)\n",
"plt.title(\"Distribution of baskets' size (log)\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"market_basket;\n",
"outlier_customer = market_basket.index[market_basket.sum(axis=1) > 200]\n",
"market_basket.ix[outlier_customer].sum(axis=1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 17,
"text": [
"Basket ID\n",
"C2752 303\n",
"dtype: int64"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# better to ignore that particular customer...\n",
"!grep C2752 marketbasket.csv"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"C2752, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true\r\n"
]
}
],
"prompt_number": 18
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment