{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Brief intro into Association Rules\n", "If you go to target and buy cocoa-butter lotion, a purse large enough to double as a diaper bag, zinc and magnesium supplements and a bright blue rug there is an 87% chance that ... " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],\n", " ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],\n", " ['Milk', 'Apple', 'Kidney Beans', 'Eggs'],\n", " ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],\n", " ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AppleCornDillEggsIce creamKidney BeansMilkNutmegOnionUnicornYogurt
0FalseFalseFalseTrueFalseTrueTrueTrueTrueFalseTrue
1FalseFalseTrueTrueFalseTrueFalseTrueTrueFalseTrue
2TrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalse
3FalseTrueFalseFalseFalseTrueTrueFalseFalseTrueTrue
4FalseTrueFalseTrueTrueTrueFalseFalseTrueFalseFalse
\n", "
" ], "text/plain": [ " Apple Corn Dill Eggs Ice cream Kidney Beans Milk Nutmeg Onion \\\n", "0 False False False True False True True True True \n", "1 False False True True False True False True True \n", "2 True False False True False True True False False \n", "3 False True False False False True True False False \n", "4 False True False True True True False False True \n", "\n", " Unicorn Yogurt \n", "0 False True \n", "1 False True \n", "2 False False \n", "3 True True \n", "4 False False " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mlxtend.preprocessing import TransactionEncoder\n", "\n", "te = TransactionEncoder()\n", "te_ary = te.fit(dataset).transform(dataset)\n", "df = pd.DataFrame(te_ary, columns=te.columns_)\n", "df" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
supportitemsets
00.8(Eggs)
11.0(Kidney Beans)
20.6(Milk)
30.6(Onion)
40.6(Yogurt)
50.8(Kidney Beans, Eggs)
60.6(Onion, Eggs)
70.6(Kidney Beans, Milk)
80.6(Onion, Kidney Beans)
90.6(Kidney Beans, Yogurt)
100.6(Onion, Kidney Beans, Eggs)
\n", "
" ], "text/plain": [ " support itemsets\n", "0 0.8 (Eggs)\n", "1 1.0 (Kidney Beans)\n", "2 0.6 (Milk)\n", "3 0.6 (Onion)\n", "4 0.6 (Yogurt)\n", "5 0.8 (Kidney Beans, Eggs)\n", "6 0.6 (Onion, Eggs)\n", "7 0.6 (Kidney Beans, Milk)\n", "8 0.6 (Onion, Kidney Beans)\n", "9 0.6 (Kidney Beans, Yogurt)\n", "10 0.6 (Onion, Kidney Beans, Eggs)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mlxtend.frequent_patterns import apriori\n", "\n", "got = apriori(df, min_support=0.6, use_colnames=True)\n", "got" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
0(Kidney Beans)(Eggs)1.00.80.80.81.000.001.000000
1(Eggs)(Kidney Beans)0.81.00.81.01.000.00inf
2(Onion)(Eggs)0.60.80.61.01.250.12inf
3(Milk)(Kidney Beans)0.61.00.61.01.000.00inf
4(Onion)(Kidney Beans)0.61.00.61.01.000.00inf
5(Yogurt)(Kidney Beans)0.61.00.61.01.000.00inf
6(Onion, Kidney Beans)(Eggs)0.60.80.61.01.250.12inf
7(Onion, Eggs)(Kidney Beans)0.61.00.61.01.000.00inf
8(Onion)(Kidney Beans, Eggs)0.60.80.61.01.250.12inf
\n", "
" ], "text/plain": [ " antecedents consequents antecedent support \\\n", "0 (Kidney Beans) (Eggs) 1.0 \n", "1 (Eggs) (Kidney Beans) 0.8 \n", "2 (Onion) (Eggs) 0.6 \n", "3 (Milk) (Kidney Beans) 0.6 \n", "4 (Onion) (Kidney Beans) 0.6 \n", "5 (Yogurt) (Kidney Beans) 0.6 \n", "6 (Onion, Kidney Beans) (Eggs) 0.6 \n", "7 (Onion, Eggs) (Kidney Beans) 0.6 \n", "8 (Onion) (Kidney Beans, Eggs) 0.6 \n", "\n", " consequent support support confidence lift leverage conviction \n", "0 0.8 0.8 0.8 1.00 0.00 1.000000 \n", "1 1.0 0.8 1.0 1.00 0.00 inf \n", "2 0.8 0.6 1.0 1.25 0.12 inf \n", "3 1.0 0.6 1.0 1.00 0.00 inf \n", "4 1.0 0.6 1.0 1.00 0.00 inf \n", "5 1.0 0.6 1.0 1.00 0.00 inf \n", "6 0.8 0.6 1.0 1.25 0.12 inf \n", "7 1.0 0.6 1.0 1.00 0.00 inf \n", "8 0.8 0.6 1.0 1.25 0.12 inf " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mlxtend.frequent_patterns import association_rules\n", "rules = association_rules(got)\n", "rules" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://en.wikipedia.org/wiki/Association_rule_learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }