用C#实现Apriori算法(文档)
来源:互联网 发布:矩阵lu分解步骤 编辑:程序博客网 时间:2024/06/08 07:18
背景:Apriori是最著名的关联规则算法,广泛应用于购物篮分析等商业领域,本实现使用软微的示例数据库AdventureWorks,实现的功能与sql server2005数据挖掘教程市场篮方案一样
<!--[if !supportLists]-->1. <!--[endif]-->输入:读取数据库,从数据库AdventureWorksDW中读取视图vAssocSeqLineItems中OrderNumber和Model,每一个OrderNumber和它关联的Model作为一个事务
<!--[if !supportLists]-->2. <!--[endif]-->数据存储结构:所有事务(项集)用一个ArrayList保存,每个事务(项集)用string保存,并且不同的项用” , ”分开,我在此处同时为了迭代L方便,建立ItemSet对象(包括项集Items,支持度Sup) 但估计会增加算法的运行时间
<!--[if !supportLists]-->3. <!--[endif]-->输出: 所有的频繁项集L
<!--[if !supportLists]-->4. <!--[endif]-->时间复杂度:4次方阶,实际运行时间也是很恐怖的60秒左右,apriori算法的缺点就是效率低,而且我写的程序效率也低,忙完这段会继续对算法学习和改进
算法:(我基于自己的理解和实现上的方便作了点修改,原伪代码可见《数据挖掘教程》Margaret H.Dunhama著)
输入:
I //项目集合,初始值为候选1项集
D //事务数据库
S //支持度
输出:
L //大项目集
Apriori算法:
repeat
Icount //项集计数器
Ifrequent //候选项集产生的频繁项集
For each I(i)∈I do
Icount(i)=0; //每一个项目集的初始计数设为0
For each D(i)∈D do
For each I(j)∈I do
If I(j)∈D(i) then
Icount(j)=Icount(j)+1;
For each I(i)∈I do
If Icount(i)≥(s×|D|) then
Ifrequent=Ifrequent∪I(i)
L=L∪Ifrequent
I=Apriori-Gen(Ifrequent)
until I为空
Apriori-Gen()
输入:
L(i-1) //大小为i-1的频繁项集
输出:
C(i) //大小为i的候选集
Apriori-Gen算法:
C(i) //初始化为空
For each l∈L(i-1) do
For each J≠I∈L(i-1) do
if 有i-1个项相同 then
C(i)=C(i)∪{I∪J};
薄弱环节和附加任务: C#数组,算法时间复杂度,和VS环境下单元测试的编写
- 用C#实现Apriori算法(文档)
- C#实现Apriori算法(源代码)
- Apriori算法的C/C#实现
- Apriori算法(c++/c#语言实现)
- Apriori算法实现
- Apriori算法实现
- Python 实现Apriori算法
- Apriori算法实现
- Apriori算法实现
- Apriori算法实现
- Apriori算法的实现
- Apriori算法c++实现
- apriori算法 初步实现
- java实现Apriori算法
- apriori算法简单实现
- C++实现apriori算法
- Apriori算法实现
- Apriori算法Matlab实现
- 关于JFreeChart中柱状图使用纹理图片填充的解决办法
- 使用AddChildAction和RemoveChildAction
- 堆
- Timer 定时器
- 闸机控制器
- 用C#实现Apriori算法(文档)
- LINUX 信号量操作
- abap 基本类型的操作
- 人生就像DOTA 需要扎实的补刀、风骚的走位、必胜的欲望和永不放弃的心(持续更新)
- 【转】嵌入式工程师step by step
- delphi vcl win32控件的创建说明
- webBrowser给documenttext赋值
- linux 菜鸟
- JScrollBar的使用小技巧