热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apriori算法实例Weka,R,Python,UsingWekainmyjavacode

学习数据挖掘工具中,下面使用4种工具来对同一个数据集进行研究。数据描述:下面这些数据是15个同学选修课程情况,在课程大纲中共有10门课程供学生选择,下面给出具体的选课情况,以ARF

学习数据挖掘工具中,下面使用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 点击配置参数信息

 

bubuko.com,布布扣

在算法完成之后,我们得到以下结果:

Best rules found:

1. Sortare_topologica=FALSE 13 ==> Arbori_TRIE=TRUE 13
lift:(1) lev:(0) [0] conv:(0)
2. Arbori_rosu_negru=TRUE 11 ==>
Arbori_TRIE=TRUE 11 lift:(1) lev:(0) [0] conv:(0)
3.
Arbori_optimali=TRUE 10 ==> Arbori_TRIE=TRUE 10 lift:(1)
lev:(0) [0] conv:(0)
4. Arbori_optimali=TRUE 10 ==>
Sortare_topologica=FALSE 10 lift:(1.15) lev:(0.09) [1]
conv:(1.33)
5. Arbori_echilibrati_in_inaltime=TRUE 10 ==>
Arbori_TRIE=TRUE 10 lift:(1) lev:(0) [0] conv:(0)
6.
Arbori_optimali=TRUE Sortare_topologica=FALSE 10 ==> Arbori_TRIE=TRUE 10
lift:(1) lev:(0) [0] conv:(0)
7. Arbori_optimali=TRUE
Arbori_TRIE=TRUE 10 ==> Sortare_topologica=FALSE 10
lift:(1.15) lev:(0.09) [1] conv:(1.33)
8. Arbori_optimali=TRUE 10 ==>
Arbori_TRIE=TRUE Sortare_topologica=FALSE 10 lift:(1.15)
lev:(0.09) [1] conv:(1.33)
9. Arbori_binari_de_cautare=TRUE 9 ==>
Arbori_TRIE=TRUE 9 lift:(1) lev:(0) [0] conv:(0)
10.
Arbori_B=FALSE 9 ==> Arbori_TRIE=TRUE 9 lift:(1) lev:(0)
[0] conv:(0)
11. Arbori_rosu_negru=TRUE Sortare_topologica=FALSE 9 ==>
Arbori_TRIE=TRUE 9 lift:(1) lev:(0) [0] conv:(0)
12.
Arbori_TRIE=TRUE 15 ==> Sortare_topologica=FALSE 13
lift:(1) lev:(0) [0] conv:(0.67)
13. Arbori_rosu_negru=TRUE 11 ==>
Sortare_topologica=FALSE 9 lift:(0.94) lev:(-0.04) [0]
conv:(0.49)
14. Arbori_rosu_negru=TRUE Arbori_TRIE=TRUE 11 ==>
Sortare_topologica=FALSE 9 lift:(0.94) lev:(-0.04) [0]
conv:(0.49)
15. Arbori_rosu_negru=TRUE 11 ==> Arbori_TRIE=TRUE
Sortare_topologica=FALSE 9 lift:(0.94) lev:(-0.04) [0]
conv:(0.49)
16. Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10
lift:(1.15) lev:(0.09) [1] conv:(1.08)
17.
Arbori_TRIE=TRUE Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE 10
lift:(1.15) lev:(0.09) [1] conv:(1.08)
18.
Sortare_topologica=FALSE 13 ==> Arbori_optimali=TRUE Arbori_TRIE=TRUE 10
lift:(1.15) lev:(0.09) [1] conv:(1.08)
19.
Arbori_TRIE=TRUE 15 ==> Arbori_rosu_negru=TRUE 11
lift:(1) lev:(0) [0] conv:(0.8)
20. Sortare_topologica=FALSE 13 ==>
Arbori_rosu_negru=TRUE 9 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);

  }

}


推荐阅读
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 本文探讨了SQLAlchemy ORM框架中如何利用外键和关系(relationship)来建立表间联系,简化复杂的查询操作。通过示例代码详细解释了relationship的定义、使用方法及其与外键的相互作用。 ... [详细]
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 本文探讨了Lua中元表和元方法的使用,通过具体的代码示例展示了如何利用这些特性来实现类似C语言中的运算符重载功能。 ... [详细]
  • 拖拉切割直线 ... [详细]
  • 本文面向非计算机专业背景的编程爱好者,介绍如何仅使用基础的C语言知识——二维数组和结构体,无需掌握复杂的数据结构如链表,即可编写一款经典的贪食蛇游戏。通过本教程,您将了解游戏开发的基本原理和实现方法。 ... [详细]
  • 本文介绍了在Android Studio中通过代码和配置文件两种方法来移除Activity的标题栏,并讨论了当Activity继承自AppCompatActivity时的特殊处理方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置单节点的Redis服务,包括下载、解压、编译安装以及启动服务的具体步骤。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • Pandas中使用sort_values方法进行数据排序
    本文介绍了如何利用Python的Pandas库中的sort_values方法对DataFrame对象进行排序。首先通过Numpy库生成随机数据,然后详细解释了DataFrame的创建过程及其参数,并重点探讨了sort_values方法的使用技巧。 ... [详细]
  • 13、单向链表
    头文件:LinkList.hLinkList.cmain.cVS2 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
author-avatar
仇顺嵐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有