Apriori算法实例----Weka,R, Using Weka in my javacode
学习数据挖掘工具中,下面使用4种工具来对同一个数据集进行研究。
数据描述:下面这些数据是15个同学选修课程情况,在课程大纲中共有10门课程供学生选择,下面给出具体的选课情况,以ARFF数据文件保存,名称为TestStudenti.arff。我使用Apriori算法期望挖掘出学生选课的关联规则。
@relation test_studenti
@attribute Arbori_binari_de_cautare {TRUE, FALSE}
@attribute Arbori_optimali {TRUE, FALSE}
@attribute Arbori_echilibrati_in_inaltime {TRUE, FALSE}
@attribute Arbori_Splay {TRUE, FALSE}
@attribute Arbori_rosu_negru {TRUE, FALSE}
@attribute Arbori_2_3 {TRUE, FALSE}
@attribute Arbori_B {TRUE, FALSE}
@attribute Arbori_TRIE {TRUE, FALSE}
@attribute Sortare_topologica {TRUE, FALSE}
@attribute Algoritmul_Dijkstra {TRUE, FALSE}
@data
TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE
TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,FALSE,FALSE
FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE
FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE
TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE
TRUE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE
FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE
TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,FALSE
FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE
TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE
FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE
TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE
FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE
TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE
TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE,FALSE
(一) Weka 使用实例
在Apriori算法中,设置minSupprot=50%, 最小置信度 minimum confidence 也设置为50%。Weka配置路径为 Explore-》Openfile(TestStudenti.arff)->Associate 点击配置参数信息

在算法完成之后,我们得到以下结果:
Best rules found:
1. Sortare_topologica=FALSE 13 ==> Arbori_TRIE=TRUE 13 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
2. Arbori_rosu_negru=TRUE 11 ==> Arbori_TRIE=TRUE 11 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
3. Arbori_optimali=TRUE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
4. Arbori_optimali=TRUE 10 ==> Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
5. Arbori_echilibrati_in_inaltime=TRUE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
6. Arbori_optimali=TRUE Sortare_topologica=FALSE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
7. Arbori_optimali=TRUE Arbori_TRIE=TRUE 10 ==> Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
8. Arbori_optimali=TRUE 10 ==> Arbori_TRIE=TRUE Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
9. Arbori_binari_de_cautare=TRUE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
10. Arbori_B=FALSE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
11. Arbori_rosu_negru=TRUE Sortare_topologica=FALSE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
12. Arbori_TRIE=TRUE 15 ==> Sortare_topologica=FALSE 13 <conf:(0.87)> lift:(1) lev:(0) [0] conv:(0.67)
13. Arbori_rosu_negru=TRUE 11 ==> Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
14. Arbori_rosu_negru=TRUE Arbori_TRIE=TRUE 11 ==> Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
15. Arbori_rosu_negru=TRUE 11 ==> Arbori_TRIE=TRUE Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
16. Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
17. Arbori_TRIE=TRUE Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
18. Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE Arbori_TRIE=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
19. Arbori_TRIE=TRUE 15 ==> Arbori_rosu_negru=TRUE 11 <conf:(0.73)> lift:(1) lev:(0) [0] conv:(0.8)
20. Sortare_topologica=FALSE 13 ==> Arbori_rosu_negru=TRUE 9 <conf:(0.69)> lift:(0.94) lev:(-0.04) [0] conv:(0.69)
分析第一条结果,我们可以得出关联规则: 如果一个学生不参加Sortare topologica 课程,那么他的一个趋向是肯定不会参加 Arbori TRIE课程。这条关联规则的置信度是100%,是非常可信的。
(二) Using Weka in my Javacode
展示Java代码,运行程序可以得到和上面一样的结果
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import weka.associations.Apriori;
import weka.core.Instances;
public class Main{
public static void main(String[] args) {
Instances data = null;
try {
BufferedReader reader = new BufferedReader( new FileReader( "TestStudenti.arff" ) );
data = new Instances(reader);
reader.close();
data.setClassIndex(data.numAttributes() - 1);
}
catch ( IOException e ) {
e.printStackTrace();
}
double deltaValue = 0.05;
double lowerBoundMinSupportValue = 0.1;
double minMetricValue = 0.5;
int numRulesValue = 20;
double upperBoundMinSupportValue = 1.0;
String resultapriori;
Apriori apriori = new Apriori();
apriori.setDelta(deltaValue);
apriori.setLowerBoundMinSupport(lowerBoundMinSupportValue);
apriori.setNumRules(numRulesValue);
apriori.setUpperBoundMinSupport(upperBoundMinSupportValue);
apriori.setMinMetric(minMetricValue);
try{
apriori.buildAssociations( data );
}
catch ( Exception e ) {
e.printStackTrace();
}
resultapriori = apriori.toString();
System.out.println(resultapriori);
}
}
(三) Using Weka in R
程序很简单,仅仅三行代码搞定。
library(RWeka);
data <- read.arff("D:/test.studenti.arff");
Apriori(data,control=Weka_control(N=20,T =0,C =0.5,D =0.05, U= 1.0,M =0.5, S =-1.0, c =-1))
运行结果:
Apriori
=======
Minimum support: 0.6 (9 instances)
Minimum metric <confidence>: 0.5
Number of cycles performed: 8
Generated sets of large itemsets:
Size of set of large itemsets L(1): 7
Size of set of large itemsets L(2): 8
Size of set of large itemsets L(3): 2
Best rules found:
1. Sortare_topologica=FALSE 13 ==> Arbori_TRIE=TRUE 13 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
2. Arbori_rosu_negru=TRUE 11 ==> Arbori_TRIE=TRUE 11 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
3. Arbori_optimali=TRUE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
4. Arbori_optimali=TRUE 10 ==> Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
5. Arbori_echilibrati_in_inaltime=TRUE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
6. Arbori_optimali=TRUE Sortare_topologica=FALSE 10 ==> Arbori_TRIE=TRUE 10 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
7. Arbori_optimali=TRUE Arbori_TRIE=TRUE 10 ==> Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
8. Arbori_optimali=TRUE 10 ==> Arbori_TRIE=TRUE Sortare_topologica=FALSE 10 <conf:(1)> lift:(1.15) lev:(0.09) [1] conv:(1.33)
9. Arbori_binari_de_cautare=TRUE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
10. Arbori_B=FALSE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
11. Arbori_rosu_negru=TRUE Sortare_topologica=FALSE 9 ==> Arbori_TRIE=TRUE 9 <conf:(1)> lift:(1) lev:(0) [0] conv:(0)
12. Arbori_TRIE=TRUE 15 ==> Sortare_topologica=FALSE 13 <conf:(0.87)> lift:(1) lev:(0) [0] conv:(0.67)
13. Arbori_rosu_negru=TRUE 11 ==> Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
14. Arbori_rosu_negru=TRUE Arbori_TRIE=TRUE 11 ==> Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
15. Arbori_rosu_negru=TRUE 11 ==> Arbori_TRIE=TRUE Sortare_topologica=FALSE 9 <conf:(0.82)> lift:(0.94) lev:(-0.04) [0] conv:(0.49)
16. Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
17. Arbori_TRIE=TRUE Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
18. Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE Arbori_TRIE=TRUE 10 <conf:(0.77)> lift:(1.15) lev:(0.09) [1] conv:(1.08)
19. Arbori_TRIE=TRUE 15 ==> Arbori_rosu_negru=TRUE 11 <conf:(0.73)> lift:(1) lev:(0) [0] conv:(0.8)
20. Sortare_topologica=FALSE 13 ==> Arbori_rosu_negru=TRUE 9 <conf:(0.69)> lift:(0.94) lev:(-0.04) [0] conv:(0.69)
Apriori算法实例----Weka,R, Using Weka in my javacode的更多相关文章
- Apriori算法实例
Apriori算法与实例 R. Agrawal 和 R. Srikant于1994年在文献[2]中提出了Apriori算法,该算法的描述如下: 下面是一个具体的例子,最开始数据库里有4条交易,{A.C ...
- Apriori算法例子
1 Apriori介绍 Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集.首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然 ...
- Apriori算法第二篇----详细分析和代码实现
1 Apriori介绍 Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集.首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然 ...
- HAWQ + MADlib 玩转数据挖掘之(七)——关联规则方法之Apriori算法
一.关联规则简介 关联规则挖掘的目标是发现数据项集之间的关联关系,是数据挖据中一个重要的课题.关联规则最初是针对购物篮分析(Market Basket Analysis)问题提出的.假设超市经理想更多 ...
- 数据挖掘:关联规则的apriori算法在weka的源码分析
相对于机器学习,关联规则的apriori算法更偏向于数据挖掘. 1) 测试文档中调用weka的关联规则apriori算法,如下 try { File file = new File("F:\ ...
- 玩转大数据:深入浅出大数据挖掘技术(Apriori算法、Tanagra工具、决策树)
一.本课程是怎么样的一门课程(全面介绍) 1.1.课程的背景 “大数据”作为时下最火热的IT行业的词汇,随之而来的数据仓库.数据分析.数据挖掘等等围绕大数据的商业价值的利用逐渐成为 ...
- #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案
郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...
- 频繁模式挖掘apriori算法介绍及Java实现
频繁模式是频繁地出如今数据集中的模式(如项集.子序列或者子结构).比如.频繁地同一时候出如今交易数据集中的商品(如牛奶和面包)的集合是频繁项集. 一些基本概念 支持度:support(A=>B) ...
- Apriori算法实现
Apriori算法原理:http://blog.csdn.net/kingzone_2008/article/details/8183768 import java.util.HashMap; imp ...
随机推荐
- Yii框架下使用redis做缓存,读写分离
Yii框架中内置好几个缓存类,其中有memcache的类,但是没有redis缓存类,由于项目中需要做主从架构,所以扩展了一下: /** * FileName:RedisCluster * 配置说明 * ...
- 认识基本的UI资源
什么是UI精灵(Sprite) 在制作UI时,经常将一些零碎的小的UI资源(比如,一个小箭头,一个按钮等)打包成一张大图,然后在使用时,只使用这个大图中的一部分,那么这一块"被切出来&quo ...
- delphi xe5 android 开发数据访问手机端 解决乱码的办法
经过测试,将sqlserver里的字段由varchar 或者char 改为 nvarchar 或者nchar 然后在手机端的clientdataset 增加字段的时候数据类型选择widestrin ...
- BZOJ 3955 Surely You Congest 解题报告
首先,我们可以求出源为 $1$ 号点的最短路图以及各个点到 $1$ 号点的最短路. 然后我们考虑那些距离不同的点,是一定不会发生拥堵现象的. 然后我们就只需要考虑那些距离相同的点,就相当于做一个最大流 ...
- 年度十佳 DevOps 博客文章(后篇)
如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.在上篇文章中我们了解到 15 年十佳 DevOps 博客文章的第 6-10 名,有没有哪一篇抓住了您的眼球,让您 ...
- JDBC MySQL字段类型为datetime的数据取出(util.Date)
使用ResultSet的getTimestamp方法获取java.util.Date型数据 java.util.Date time = rs.getTimestamp("time" ...
- Linux下SSH免密码登录
转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...
- [状压dp]HDU3001 Travelling
题意: 走n个城市, m条路, 起点任意, 每个城市走不超过两次, 求最小花费, 不能走输出-1. $1\le n\le 10$ 分析: 每个城市的拜访次数为0 1 2, 所以三进制状压, 先预处理1 ...
- UVALive 6609 Minimal Subarray Length (查找+构建排序数组)
描述:给定n个整数元素,求出长度最小的一段连续元素,使得这段元素的和sum >= X. 对整个数组先求出sum[i],表示前i个元素的和,然后依次求出以a[i]为起点的,总和>= X的最小 ...
- ANDROID_MARS学习笔记_S01原始版_010_ContentProvider
一.简介 一.代码1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <Linea ...