关联规则浅谈以及Apriori算法matlab实现
来源:互联网 发布:js 遍历div中的ul li 编辑:程序博客网 时间:2024/06/05 06:15
关联规则分析也叫做购物篮分析,最早是为发现超市销售数据库中不同商品之间的关联关系。例如一个超市的经理想要更多的了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时被购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包->牛奶”,其中面包称为规则的前项,而牛奶则称为规则的后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。
关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。
1、常用的关联规则算法
以下重点介绍Apriori算法。
2、Apriori算法
以超市销售数据为例,提取关联规则的最大困难在于当存在很多商品时,可能的商品的组合(规则的前项和后项)的数目会达到一种令人望而却步的程度。因而各种关联规则分析的算法从不同方面入手减小可能的搜索空间的大小,以及减小扫描数据的次数。Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度,然后通过剪枝生成频繁项集。
3、关联规则和频繁项集
1)关联规则的一般形式
项集A、B同时发生的概率称为关联规则的支持度(也称相对支持度):
项集A发生,则项集B发生的概率为关联规则的置信度:
2)最小支持度和最小置信度
最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性,同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。
3)项集
项集是项的集合。包含k个项的项集称为k项集,如集合{牛奶,麦片,糖}是一个3项集。
项集的出现频率是所有包含项集的事务计数,又称做绝对支持度或支持度计数。如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。频繁k项集通常记作。
4)支持度计数
项集A的支持度计数是事务数据集中包含A的事务个数,简称为项集的频率或计数。
已知项集的支持度计数,则规则的支持度和置信度很容易从所有事务计数、项集A和项集的支持度计数推出:
也就是说,一旦得到所有事务的个数,A、B和的支持度计数,就可以导出对应的关联规则和,并可以检查该规则是否是强规则。
4、Apriori算法——使用候选产生频繁项集
Apriori算法的主要思想是找出存在于事务数据集中最大的频繁项集,利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。
1)Apriori的性质
频繁项集的所有非空子集也必须是频繁项集。根据该性质可以得出:向不是频繁项集I的项集中添加事务A,新的项集一定也不是频繁项集。
2)Apriori算法实现的两个过程
a)找出所有的频繁项集(支持度必须大于等于给定的最小支持度阈值),在这个过程中连接步和剪枝步互相融合,最终得到最大的频繁项集。
连接步:连接步的目的是找到K项集。对给定的最小支持度阈值,分别对1项候选集,剔除小于该阈值的项集得到1项频繁项集;下一步由自身连接产生两项候选集,保留中满足约束条件的项集得到两项频繁集,记为;再下一步由与连接产生三项候选集,保留中满足约束条件的项集得到三项频繁集,记为,等等。这样循环下去,得到最大频繁项集。
剪枝步:剪枝步紧接着连接步,在产生候选项的过程中启到减小搜索空间的目的。由于是与连接产生的,根据Apriori的性质频繁项集的所有非空子集也必须是频繁项集,所以不满足该性质的项集将不会存在于中,该过程就是剪枝。
b)由频繁项集产生强关联规则:在过程a)可知未超过预定的最小支持度阈值的项集已被剔除,如果剩下这些规则又满足了预定的最小置信度阈值,那么就挖掘出了强关联规则。
下面根据实例来讲解Apriori关联规则算法挖掘的实现过程。
数据如下所示
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-operator" style="box-sizing: border-box;">a</span>,c,eb,db,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c,d<span class="hljs-operator" style="box-sizing: border-box;">a</span>,bb,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c,e<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,c,e</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
以上有10个事务数据集,设支持度为0.2(支持度计数为2),则Apriori算法的实现过程如下。
过程一:找最大k项频繁集
a)Apriori算法简单地扫描所有的事务,事务中的每一项都是候选1项集的集合的成员,计算每一项的支持度。比如 ;
b)对中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得一项频繁集;
c)扫描所有事务,与连接得候选2项集,并计算每一项的支持度。如
。
接下来是剪枝步,由于的每个子集(即)都是频繁集,所以没有项集从中被剔除;
d)对中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得两项频繁集 ;
e)扫描所有事务,与连接得候选3项集,并计算每一项的支持度,如
。
接下来是剪枝步,与连接的所有项集为:、、、、、、,根据Apriori算法,频繁集的所有非空子集也必须是频繁集,因为、、不包含在b项频繁集中,即不是频繁集,应剔除,最后的中的项集只有和 ;
f)对中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得三项频繁集 ;
g) 与连接得候选四项集,易得剪枝后为空集。最后得到最大三项频繁集和 。
由以上过程可知、、都是频繁项集,是最大频繁项集。
过程二:由频繁集产生关联规则。
置信度的计算公式为:
其中是包含项集的事务数;是包含项集A的事务数;根据该公式,可以计算关联规则的置信度。
生成的24条关联规则的支持度和置信度如下所示。
在这里我们把最小置信度设为50%,则关联规则变为16条,如图所示。
在这里举例说明置信度的计算,如
Matlab代码如下
首先建立数据源
menu_orders.txt
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-operator" style="box-sizing: border-box;">a</span>,c,eb,db,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c,d<span class="hljs-operator" style="box-sizing: border-box;">a</span>,bb,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c,e<span class="hljs-operator" style="box-sizing: border-box;">a</span>,b,c<span class="hljs-operator" style="box-sizing: border-box;">a</span>,c,e</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
然后是具体的程序
cal_apriori.m
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">%% 使用Apriori算法挖掘关联规则clear;%</span> 参数初始化inputfile = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'menu_orders.txt'</span>; % 销量及其他属性数据outputfile=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'as.txt'</span>;% 输出转换后<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>矩阵文件minSup = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>; % 最小支持度minConf = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;% 最小置信度nRules = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span>;% 输出最大规则数sortFlag = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;% 按照支持度排序rulefile = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'rules.txt'</span>; % 规则输出文件<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">%% 调用转换程序 ,把数据转换为0,1矩阵,自定义函数[transactions,code] = trans2matrix(inputfile,outputfile,','); %</span>% 调用<span class="hljs-constant" style="box-sizing: border-box;">Apriori</span>关联规则算法,自定义函数[<span class="hljs-constant" style="box-sizing: border-box;">Rules</span>,<span class="hljs-constant" style="box-sizing: border-box;">FreqItemsets</span>] = findRules(transactions, minSup, minConf, nRules, sortFlag, code, rulefile);disp(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'Apriori算法挖掘菜品订单关联规则完成!'</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li></ul>
trans2matrix.m
<code class="hljs matlab has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span> <span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">[ output,code]</span> = <span class="hljs-title" style="box-sizing: border-box;">trans2matrix</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">( inputfile,outputfile,splitter )</span></span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%% 把输入事务转换为0、1矩阵;每行代表一个事务</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 输入参数:</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% inputfile:输入文件,空格分隔每个项目;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% outputfile:输出文件,转换后的0,1矩阵文件;</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% splitter: 输入文件项目的间隔符,默认为空格</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 输出参数:</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% output : 转换后的0,1 矩阵</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% code:编码规则;</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> splitter=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">' '</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%% 读入文件, 获得编码规则</span>code=<span class="hljs-cell" style="box-sizing: border-box;">{}</span>;fid= fopen(inputfile);tline = fgetl(fid);lines=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> ischar(tline) lines=lines+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 记录行数</span> tline = deblank(tline); tline = regexp(tline,splitter,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'split'</span>); code=<span class="hljs-matrix" style="box-sizing: border-box;">[code tline]</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 合并 </span> code = unique(code); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 去除重复记录</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% disp(code)</span> tline = fgetl(fid);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">disp</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'编码规则为:'</span>)<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">disp</span>(num2str(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">size</span>(code,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)))<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">disp</span>( code);fclose(fid); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 关闭文档</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%% 读取文件,根据编码规则对原始数据进行转换</span>itemsnum= <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">size</span>(code,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>);output=<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">zeros</span>(lines,itemsnum);fid= fopen(inputfile);tline = fgetl(fid);lines=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> ischar(tline) lines=lines+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 记录行数</span> tline = deblank(tline); tline = regexp(tline,splitter,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'split'</span>); <span class="hljs-matrix" style="box-sizing: border-box;">[~,icode,~]</span> = intersect(code,tline);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">% 寻找下标</span> output(lines,<span class="hljs-transposed_variable" style="box-sizing: border-box;">icode'</span>)=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%disp(output(lines,:))</span> tline = fgetl(fid);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>fclose(fid);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%% 把转换后的矩阵写入文件</span>fid = fopen(outputfile, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'w'</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">i</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:lines fprintf(fid,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'%s\n'</span>,num2str(output(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">i</span>,:))); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>fclose(fid);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li></ul>
findRules.m
<code class="hljs applescript has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">function [Rules,FreqItemsets] = findRules(transactions, minSup, minConf, nRules, sortFlag, code, rulesfile)%% This function performs Association Analysis (Apriori Algorithm): Given a <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">set</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> transactions,% find rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> will predict <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> occurrence <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> an <span class="hljs-property" style="box-sizing: border-box;">item</span> based <span class="hljs-function_start" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> occurrences <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> other% items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">transaction</span>% % Rules are <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> form A-> B (e.g., {milk, diaper} - > {Coke}), <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span>% support = minSup (minimum support threshold)% confidence = minConf (minimum confidence threshold)% % Support <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> fraction <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> transactions <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">contain</span> both A <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> B:% Support(A,B) = P(A,B)% % Confidence <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> fraction <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> transactions <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> B appear <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> transactions <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">contain</span> A:% Confidence(A,B) = P(B|A)%%% INPUT:% transactions: M x N matrix <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> binary transactions, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> each row% represents one <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">transaction</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> each column represents% one attribute/<span class="hljs-property" style="box-sizing: border-box;">item</span>% minSup: scalar value <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> represents <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> minimum% threshold <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> support <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> each rule% minConf: scalar value <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> represents <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> minimum% threshold <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> confidence <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> each rule% nRules: scalar value indicating <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> <span class="hljs-type" style="box-sizing: border-box;">number</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> rules% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> user wants <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> find% sortFlag: binary value indicating <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rules should be% sorted <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> support level <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> confidence level% <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>: sort <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> rule support level% <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>: sort <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> rule confidence level% code (labels): 编码规则 optional parameter <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> provides labels <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>% each attribute (columns <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> transactions),% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> default attributes are represented% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> increasing numerical values <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:N% % fname: optional <span class="hljs-type" style="box-sizing: border-box;">file</span> <span class="hljs-property" style="box-sizing: border-box;">name</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> rules are saved%% OUTPUT:% Rules: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> x <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> cell array, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">first</span> cell (Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{:})% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">contains</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> itemsets <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> left side <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rule <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">second</span>% cell (Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{:}) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">contains</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> itemsets% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> right side <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rule (e.g., <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">first</span> rule <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> {<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>} -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,% Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} = [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>], Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} = [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>])% FreqItemsets: A cell array <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> frequent itemsets <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> size <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,% etc., <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> itemset support >= minSup,% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">where</span> FreqItemSets{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} represents itemsets% <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> size <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, FreqItemSets{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>} itemsets <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span>% size <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, etc.% fname.txt: The code creates a <span class="hljs-type" style="box-sizing: border-box;">text</span> <span class="hljs-type" style="box-sizing: border-box;">file</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> stores all <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span>% rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> form left_side -> right_side.%% author: Narine Manukyan <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">08</span>/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2013</span>% Number <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> transactions <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> datasetM = size(transactions,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);% Number <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> attributes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> datasetN = size(transactions,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span> fname = 'default';<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> labels = cellfun(@(x){num2str(x)}, num2cell(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:N));<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span> sortFlag = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> nRules = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> minConf = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> minSup = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> nargin == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">error</span>('No input arguments were supplied. At least one <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> expected.');<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>% Preallocate memory <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> Rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> FreqItemsetsmaxSize = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>^<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>;Rules = cell(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} = cell(nRules,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>} = cell(nRules,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);FreqItemsets = cell(maxSize);RuleConf = zeros(nRules,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);RuleSup = zeros(nRules,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);ct = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;% Find frequent <span class="hljs-property" style="box-sizing: border-box;">item</span> sets <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> size one (<span class="hljs-type" style="box-sizing: border-box;">list</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> all items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> minSup)T = [];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:N S = sum(transactions(:,i))/M; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> S >= minSup T = [T; i]; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>FreqItemsets{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} = T;%Find frequent <span class="hljs-property" style="box-sizing: border-box;">item</span> sets <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> size >=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> those identify rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> minConf<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> steps = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>:N % If there aren't <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">at</span> least two items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> minSup terminate U = unique(T); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> isempty(U) || size(U,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}(ct:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>) = []; Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}(ct:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>) = []; FreqItemsets(steps-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>) = []; break <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> % Generate all combinations <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> are <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> frequent itemset Combinations = nchoosek(U',steps); TOld = T; T = []; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> j = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:size(Combinations,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ct > nRules break; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> % Apriori rule: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> any subset <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> items are <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> frequent itemset do <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> % consider <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> superset (e.g., <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> {A, B} <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">does</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> have minSup do <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> consider {A,B,*}) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> sum(ismember(nchoosek(Combinations(j,:),steps-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>),TOld,'rows')) - steps+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> % Calculate <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> support <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> new itemset S = mean((sum(transactions(:,Combinations(j,:)),<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)-steps)>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> S >= minSup T = [T; Combinations(j,:)]; % Generate potential rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> check <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> minConf <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> depth = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:steps-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> R = nchoosek(Combinations(j,:),depth); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> r = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:size(R,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ct > nRules break; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> % Calculate <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> confidence <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rule Ctemp = S/mean((sum(transactions(:,R(r,:)),<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)-depth)==<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> Ctemp > minConf % Store <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">that</span> have minSup <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> minConf Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{ct} = R(r,:); Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{ct} = setdiff(Combinations(j,:),R(r,:)); RuleConf(ct) = Ctemp; RuleSup(ct) = S; ct = ct+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> % Store <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> freqent itemsets FreqItemsets{steps} = T;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>% Get rid <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> unnecessary rows due <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> preallocation (helps <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> speed)FreqItemsets(steps-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>) = [];RuleConf = RuleConf(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:ct-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);RuleSup = RuleSup(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:ct-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);% Sort <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rules <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> descending order based <span class="hljs-function_start" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> confidence <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> support levelswitch sortFlag case <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> % Sort <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> Support level [V ind] = sort(RuleSup,'descend'); case <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> % Sort <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> Confidence level [V ind] = sort(RuleConf,'descend');<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>RuleConf = RuleConf(ind);RuleSup = RuleSup(ind);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> temp = Rules{i,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}; temp = temp(ind); Rules{i,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>} = temp;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>disp(['关联规则算法完成,规则数为:' num2str(size(RuleSup,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>))]);% Save <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> rule <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> a <span class="hljs-type" style="box-sizing: border-box;">text</span> <span class="hljs-type" style="box-sizing: border-box;">file</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> print them <span class="hljs-function_start" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span></span> displayfid = fopen(rulesfile, 'w');fprintf(fid, '%s (%s, %s) \n', 'Rule', 'Support', 'Confidence');<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:size(Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>},<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) s1 = ''; s2 = ''; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> j = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:size(Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{i},<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> j == size(Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{i},<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) s1 = [s1 code{Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{i}(j)}]; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> s1 = [s1 code{Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}{i}(j)} ',']; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> k = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:size(Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{i},<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> k == size(Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{i},<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) s2 = [s2 code{Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{i}(k)}]; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> s2 = [s2 code{Rules{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}{i}(k)} ',']; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span> s3 = num2str(RuleSup(i)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>); s4 = num2str(RuleConf(i)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>); fprintf(fid, '%s -> %s (%s%%, %s%%)\n', s1, s2, s3, s4);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>fclose(fid);disp(['存储规则到文件‘' rulesfile '’完成'])<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li><li style="box-sizing: border-box; padding: 0px 5px;">140</li><li style="box-sizing: border-box; padding: 0px 5px;">141</li><li style="box-sizing: border-box; padding: 0px 5px;">142</li><li style="box-sizing: border-box; padding: 0px 5px;">143</li><li style="box-sizing: border-box; padding: 0px 5px;">144</li><li style="box-sizing: border-box; padding: 0px 5px;">145</li><li style="box-sizing: border-box; padding: 0px 5px;">146</li><li style="box-sizing: border-box; padding: 0px 5px;">147</li><li style="box-sizing: border-box; padding: 0px 5px;">148</li><li style="box-sizing: border-box; padding: 0px 5px;">149</li><li style="box-sizing: border-box; padding: 0px 5px;">150</li><li style="box-sizing: border-box; padding: 0px 5px;">151</li><li style="box-sizing: border-box; padding: 0px 5px;">152</li><li style="box-sizing: border-box; padding: 0px 5px;">153</li><li style="box-sizing: border-box; padding: 0px 5px;">154</li><li style="box-sizing: border-box; padding: 0px 5px;">155</li><li style="box-sizing: border-box; padding: 0px 5px;">156</li><li style="box-sizing: border-box; padding: 0px 5px;">157</li><li style="box-sizing: border-box; padding: 0px 5px;">158</li><li style="box-sizing: border-box; padding: 0px 5px;">159</li><li style="box-sizing: border-box; padding: 0px 5px;">160</li><li style="box-sizing: border-box; padding: 0px 5px;">161</li><li style="box-sizing: border-box; padding: 0px 5px;">162</li><li style="box-sizing: border-box; padding: 0px 5px;">163</li><li style="box-sizing: border-box; padding: 0px 5px;">164</li><li style="box-sizing: border-box; padding: 0px 5px;">165</li><li style="box-sizing: border-box; padding: 0px 5px;">166</li><li style="box-sizing: border-box; padding: 0px 5px;">167</li><li style="box-sizing: border-box; padding: 0px 5px;">168</li><li style="box-sizing: border-box; padding: 0px 5px;">169</li><li style="box-sizing: border-box; padding: 0px 5px;">170</li><li style="box-sizing: border-box; padding: 0px 5px;">171</li><li style="box-sizing: border-box; padding: 0px 5px;">172</li><li style="box-sizing: border-box; padding: 0px 5px;">173</li><li style="box-sizing: border-box; padding: 0px 5px;">174</li><li style="box-sizing: border-box; padding: 0px 5px;">175</li><li style="box-sizing: border-box; padding: 0px 5px;">176</li><li style="box-sizing: border-box; padding: 0px 5px;">177</li><li style="box-sizing: border-box; padding: 0px 5px;">178</li><li style="box-sizing: border-box; padding: 0px 5px;">179</li><li style="box-sizing: border-box; padding: 0px 5px;">180</li><li style="box-sizing: border-box; padding: 0px 5px;">181</li><li style="box-sizing: border-box; padding: 0px 5px;">182</li><li style="box-sizing: border-box; padding: 0px 5px;">183</li><li style="box-sizing: border-box; padding: 0px 5px;">184</li><li style="box-sizing: border-box; padding: 0px 5px;">185</li><li style="box-sizing: border-box; padding: 0px 5px;">186</li><li style="box-sizing: border-box; padding: 0px 5px;">187</li><li style="box-sizing: border-box; padding: 0px 5px;">188</li><li style="box-sizing: border-box; padding: 0px 5px;">189</li><li style="box-sizing: border-box; padding: 0px 5px;">190</li><li style="box-sizing: border-box; padding: 0px 5px;">191</li><li style="box-sizing: border-box; padding: 0px 5px;">192</li><li style="box-sizing: border-box; padding: 0px 5px;">193</li><li style="box-sizing: border-box; padding: 0px 5px;">194</li><li style="box-sizing: border-box; padding: 0px 5px;">195</li><li style="box-sizing: border-box; padding: 0px 5px;">196</li><li style="box-sizing: border-box; padding: 0px 5px;">197</li><li style="box-sizing: border-box; padding: 0px 5px;">198</li><li style="box-sizing: border-box; padding: 0px 5px;">199</li><li style="box-sizing: border-box; padding: 0px 5px;">200</li><li style="box-sizing: border-box; padding: 0px 5px;">201</li><li style="box-sizing: border-box; padding: 0px 5px;">202</li><li style="box-sizing: border-box; padding: 0px 5px;">203</li><li style="box-sizing: border-box; padding: 0px 5px;">204</li><li style="box-sizing: border-box; padding: 0px 5px;">205</li><li style="box-sizing: border-box; padding: 0px 5px;">206</li><li style="box-sizing: border-box; padding: 0px 5px;">207</li><li style="box-sizing: border-box; padding: 0px 5px;">208</li><li style="box-sizing: border-box; padding: 0px 5px;">209</li><li style="box-sizing: border-box; padding: 0px 5px;">210</li><li style="box-sizing: border-box; padding: 0px 5px;">211</li><li style="box-sizing: border-box; padding: 0px 5px;">212</li><li style="box-sizing: border-box; padding: 0px 5px;">213</li><li style="box-sizing: border-box; padding: 0px 5px;">214</li><li style="box-sizing: border-box; padding: 0px 5px;">215</li><li style="box-sizing: border-box; padding: 0px 5px;">216</li><li style="box-sizing: border-box; padding: 0px 5px;">217</li><li style="box-sizing: border-box; padding: 0px 5px;">218</li><li style="box-sizing: border-box; padding: 0px 5px;">219</li><li style="box-sizing: border-box; padding: 0px 5px;">220</li><li style="box-sizing: border-box; padding: 0px 5px;">221</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li><li style="box-sizing: border-box; padding: 0px 5px;">140</li><li style="box-sizing: border-box; padding: 0px 5px;">141</li><li style="box-sizing: border-box; padding: 0px 5px;">142</li><li style="box-sizing: border-box; padding: 0px 5px;">143</li><li style="box-sizing: border-box; padding: 0px 5px;">144</li><li style="box-sizing: border-box; padding: 0px 5px;">145</li><li style="box-sizing: border-box; padding: 0px 5px;">146</li><li style="box-sizing: border-box; padding: 0px 5px;">147</li><li style="box-sizing: border-box; padding: 0px 5px;">148</li><li style="box-sizing: border-box; padding: 0px 5px;">149</li><li style="box-sizing: border-box; padding: 0px 5px;">150</li><li style="box-sizing: border-box; padding: 0px 5px;">151</li><li style="box-sizing: border-box; padding: 0px 5px;">152</li><li style="box-sizing: border-box; padding: 0px 5px;">153</li><li style="box-sizing: border-box; padding: 0px 5px;">154</li><li style="box-sizing: border-box; padding: 0px 5px;">155</li><li style="box-sizing: border-box; padding: 0px 5px;">156</li><li style="box-sizing: border-box; padding: 0px 5px;">157</li><li style="box-sizing: border-box; padding: 0px 5px;">158</li><li style="box-sizing: border-box; padding: 0px 5px;">159</li><li style="box-sizing: border-box; padding: 0px 5px;">160</li><li style="box-sizing: border-box; padding: 0px 5px;">161</li><li style="box-sizing: border-box; padding: 0px 5px;">162</li><li style="box-sizing: border-box; padding: 0px 5px;">163</li><li style="box-sizing: border-box; padding: 0px 5px;">164</li><li style="box-sizing: border-box; padding: 0px 5px;">165</li><li style="box-sizing: border-box; padding: 0px 5px;">166</li><li style="box-sizing: border-box; padding: 0px 5px;">167</li><li style="box-sizing: border-box; padding: 0px 5px;">168</li><li style="box-sizing: border-box; padding: 0px 5px;">169</li><li style="box-sizing: border-box; padding: 0px 5px;">170</li><li style="box-sizing: border-box; padding: 0px 5px;">171</li><li style="box-sizing: border-box; padding: 0px 5px;">172</li><li style="box-sizing: border-box; padding: 0px 5px;">173</li><li style="box-sizing: border-box; padding: 0px 5px;">174</li><li style="box-sizing: border-box; padding: 0px 5px;">175</li><li style="box-sizing: border-box; padding: 0px 5px;">176</li><li style="box-sizing: border-box; padding: 0px 5px;">177</li><li style="box-sizing: border-box; padding: 0px 5px;">178</li><li style="box-sizing: border-box; padding: 0px 5px;">179</li><li style="box-sizing: border-box; padding: 0px 5px;">180</li><li style="box-sizing: border-box; padding: 0px 5px;">181</li><li style="box-sizing: border-box; padding: 0px 5px;">182</li><li style="box-sizing: border-box; padding: 0px 5px;">183</li><li style="box-sizing: border-box; padding: 0px 5px;">184</li><li style="box-sizing: border-box; padding: 0px 5px;">185</li><li style="box-sizing: border-box; padding: 0px 5px;">186</li><li style="box-sizing: border-box; padding: 0px 5px;">187</li><li style="box-sizing: border-box; padding: 0px 5px;">188</li><li style="box-sizing: border-box; padding: 0px 5px;">189</li><li style="box-sizing: border-box; padding: 0px 5px;">190</li><li style="box-sizing: border-box; padding: 0px 5px;">191</li><li style="box-sizing: border-box; padding: 0px 5px;">192</li><li style="box-sizing: border-box; padding: 0px 5px;">193</li><li style="box-sizing: border-box; padding: 0px 5px;">194</li><li style="box-sizing: border-box; padding: 0px 5px;">195</li><li style="box-sizing: border-box; padding: 0px 5px;">196</li><li style="box-sizing: border-box; padding: 0px 5px;">197</li><li style="box-sizing: border-box; padding: 0px 5px;">198</li><li style="box-sizing: border-box; padding: 0px 5px;">199</li><li style="box-sizing: border-box; padding: 0px 5px;">200</li><li style="box-sizing: border-box; padding: 0px 5px;">201</li><li style="box-sizing: border-box; padding: 0px 5px;">202</li><li style="box-sizing: border-box; padding: 0px 5px;">203</li><li style="box-sizing: border-box; padding: 0px 5px;">204</li><li style="box-sizing: border-box; padding: 0px 5px;">205</li><li style="box-sizing: border-box; padding: 0px 5px;">206</li><li style="box-sizing: border-box; padding: 0px 5px;">207</li><li style="box-sizing: border-box; padding: 0px 5px;">208</li><li style="box-sizing: border-box; padding: 0px 5px;">209</li><li style="box-sizing: border-box; padding: 0px 5px;">210</li><li style="box-sizing: border-box; padding: 0px 5px;">211</li><li style="box-sizing: border-box; padding: 0px 5px;">212</li><li style="box-sizing: border-box; padding: 0px 5px;">213</li><li style="box-sizing: border-box; padding: 0px 5px;">214</li><li style="box-sizing: border-box; padding: 0px 5px;">215</li><li style="box-sizing: border-box; padding: 0px 5px;">216</li><li style="box-sizing: border-box; padding: 0px 5px;">217</li><li style="box-sizing: border-box; padding: 0px 5px;">218</li><li style="box-sizing: border-box; padding: 0px 5px;">219</li><li style="box-sizing: border-box; padding: 0px 5px;">220</li><li style="box-sizing: border-box; padding: 0px 5px;">221</li></ul>
运行完程序后,会生成rules.txt和as.txt。
我们主要关心rules.txt,里面的内容就是关联规则、支持度和置信度,如下所示。
- 关联规则浅谈以及Apriori算法matlab实现
- 关联规则浅谈以及Apriori算法matlab实现
- 关联规则apriori算法的python实现
- 关联规则,Apriori算法及python实现
- python实现关联规则分析Apriori算法
- 关联规则算法Apriori
- Apriori关联规则算法
- 关联规则-Apriori算法
- 数据挖掘——关联规则以及Apriori算法
- Apriori算法--关联规则 转载
- 关联规则之apriori算法
- 关联规则挖掘 - Apriori算法
- 关联规则挖掘算法:Apriori
- Apriori算法--关联规则挖掘
- Apriori算法--关联规则挖掘
- apriori和关联规则算法
- 关联规则挖掘算法-apriori
- 关联规则之Apriori算法
- 使用linux主义的问题
- GPIB_Code 实例
- Canvas绘图接口(直线)
- 三、HTML基础之列表
- python-opencv 关于鼠标的回调函数
- 关联规则浅谈以及Apriori算法matlab实现
- java 内部类和匿名内部类
- 多节点分布式集群
- Linux驱动学习书籍推荐
- Android获取指定日期的long型数值
- 从B 树、B+ 树、B* 树谈到R 树
- “互联网+”下的数据化运营和技术架构
- 网站加密算法
- Xamarin.Forms使用XLabs.Forms时MainActivity的继承问题