java实现数据挖掘_数据挖掘Apriori算法的java实现
对于Apriori算法,Apriori算法是一种挖掘关联规则的频繁项集算法,在很多领域中应用广泛。
它的算法思想是:
1先找到所有的小频繁项集,
2然后做连接步骤,将小频繁项集拼接作为候选集,
3然后对候选集做剪枝步骤。
4将候选集中支持度小于最小支持度的项删除。
5循环上述步骤,直到找到所有最大项集。
这个算法的核心是运用了频繁项集的反单调性。即先验性质
频繁项集的所有非空子集都是频繁的
利用上述思想,我准备用java来实现它,能够对给定的数据进行挖掘关联规则。
首先我准备使用文件来作为数据输入,因为对于要挖掘的数据集肯定是巨大的,利用文件输入才比较合适。
1.对于文件格式,以行为单位输入,每行表示一个事务集。
2.对于数据在java中存储结构我使用Map来进行存储的。
3.代码可以展示程序的步骤,输出算法每次进行的中间结果。最后得到频繁项集。
4.数据集中的项在程序中只能为单个字符,读者可以修改成处理字符串的项。
5.程序的复杂度可能存在很多改进的地方,对于大型数据集的处理还有待优化。
下面为具体代码实现:
package pack1;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class apriori {
//字符串排序(冒泡实现)
public static String sort(String str){
char[]
list=str.toCharArray();
for (int i = 1; i <
str.length(); i++) {
for (int j =
i - 1; j > -1; j--) {
if
(list[j + 1] < list[j]) {
char
a = list[j + 1];
list[j
+ 1] = list[j];
list[j]
= a;
}
}
}
return new String(list);
}
//字符串去重方法
public static String fun(String str){
String[]
arr=str.split("");
StringBuilder sb= new
StringBuilder(); //这里要注意
for(int i=1;i
if(sb.indexOf(arr[i]) < 0){
sb.append(arr[i]);
}
}
return sb.toString();
}
//抽取出 求对于给定集的频繁度的方法
public static int pin(String s, List al){
int count=0;
for(int i=0;i
boolean b=true;
for(int k=0;k
b=b&&al.get(i).contains(""+s.charAt(k));
}
if(b)
count++;
}
return count;
}
public static void main(String[] args) throws
IOException{
// System.out.println(sort(fun("bcdsaffaklaslk")));
int min=3;
// 定义文件输入流
BufferedReader br=new
BufferedReader( new FileReader("G:\\aaa.txt"));
// 定义存储数据文件
File f=new
File("G:\\bbb.txt");
// 定义文件输输出流
// 定义map集合
HashMap hm=new
HashMap<>();
ArrayList al=new ArrayList<>();
List houl=new ArrayList<>();
// 按行读取文件,装入集合
String line;
while((line=br.readLine())!=null){
al.add(line);
String[]
arr=line.split(" ");
Set
key=hm.keySet();
for (int i =
0; i < arr.length; i++) {
if(key.contains(arr[i])){
int
value=hm.get(arr[i])+1;
hm.put(arr[i],
value);
}else{
hm.put(arr[i],1);
}
}
}
br.close(); while(houl.size()!=1){
java实现数据挖掘_数据挖掘Apriori算法的java实现相关推荐
- java红包记录_微信红包算法(java)
package com.example.ant.common.tools; import java.util.LinkedList; import java.util.List; /** * 描述:红 ...
- java环形链表_数据结构和算法(四)Java实现环形链表
1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...
- Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(
2019独角兽企业重金招聘Python工程师标准>>> 在Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(百搜技术) 在Java ME游戏开发中,经常需要进行碰撞检测 ...
- 数据挖掘之关联规则(Apriori算法)
整理写一份比较易懂的Apriori算法: 关联规则想必大家都是听说过 尿布和啤酒的故事: 在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售.但是这个奇怪的举措却使尿布和啤酒的销量双双增加了. ...
- 数据挖掘实验之Apriori算法
数据挖掘实验Apriori算法,在指导书上看着写的,仅供参考. 数据集如下: 购物单号 购物项目 T1 1 3 4 T2 2 3 5 T3 1 2 3 5 T4 2 5 ...
- python数据挖掘(5.Apriori算法)
数据源 第一章我们介绍了最基础的亲和性分析,尝试了所有的规则计算了所有的置信度和支持度,但是这个方法效率不高而且我们使用的数据集只有5种商品,但是实际生活中即使是小商店的商品也会超过百种,而网店商品的 ...
- python电子病历数据挖掘_数据挖掘技术在基于XML的电子病历中的应用研究
第1章绪论. 1论文的选题及其研究意义 2医院信息系统的发展状况................................ -- 选题的国内外研究现状 论文的研究内容及组织........ -- ...
- java 求最大公因数_三种算法求最大公约数——Java实现 | 学步园
求两个自然数m和n的最大公约数. 连续整除检测: 1. t=min{m,n}: 2. m除以t,如果余数为0,则执行步骤3,否则,执行步骤4: 3. n除以t,如果余数为0,返回t的值作为结果,否则, ...
- java微信红包开发_微信红包算法(java)
package com.example.ant.common.tools; import java.util.LinkedList; import java.util.List; /** * 描述:红 ...
最新文章
- 计算机组成考试题及答案,计算机组成测试题一参考答案
- Java服务提供_JAVA 服务提供者框架介绍
- java多线程的同步
- Session分布式共享 = Session + Redis + Nginx
- codeforces 501 C,D,E
- Oracle 11g 安装后续——开发工具篇
- Linux隐藏文件标识
- golang的一个简单小爬虫demo学习记录
- matlab根据结构体数组,用邻接矩阵和序遍历创建树形结构:
- 【渝粤教育】广东开放大学 网络市场调查与预测 形成性考核 (23)
- Centos7 安装netcat(NC瑞士军刀)
- paip.JAVA的几大优点与缺点相比C#.NET.txt
- 计算机专业学科建设3,学科建设-华中科技大学计算机科学与技术学院
- 强化学习之Q-Learning(附代码)
- 怎样解决迅雷下载时的版权限制-两招解决迅雷下载版权限制
- 英国资深律师称加密货币和智能合约必然将成为社会主流
- 新手前端程序员就职指南之 - 入职第一天
- JRE和JDK的区别(笔记)
- 本地数据库迁移至服务器数据库的教程
- 我的世界我服务器注册密码大全,网易账号密码大全我的世界 | 手游网游页游攻略大全...
热门文章
- OBPS开发平台——导入功能vb代码解析
- 相机内参 k_4K相机与智能手机中的4K视频相比如何
- Django基础之MVT
- U盘超级加密3000
- Automatic extrinsic calibration between a camera and a 3D Lidar using 3D point and plane corresponde
- 播音主持如何运气发声?早上应该如何练声?
- TI DSP系列分类
- 侏罗纪世界手游显示无法登陆到服务器,侏罗纪世界手游闪退怎么办 游戏闪退解决方法...
- 一个误操作导致 5.4 万 Star 全部归零,10年的心血...
- swagger no content