java实现数据挖掘_数据挖掘Apriori算法的java实现

2023-05-16

对于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){

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现数据挖掘_数据挖掘Apriori算法的java实现 的相关文章

随机推荐