llllllllllll.... 2023-10-18 17:16 采纳率: 0%
浏览 4

数据挖掘实验,实现并行apriori算法,看一下需要怎么改

function [Lk,L1,L2] = para_Apriori(filename1,filename2,minsup)
% %调用方式: [Lk,L1,L2] = para_Apriori('test3.txt','test5.txt',0.4)
global MAXITEM
MAXITEM =10;
data1 = getdatafromfile(filename1);
data2 = getdatafromfile(filename2);
%large 1-items
b = sum(data1,1);  %按列求和 
C1a = find( b > 0);
b = sum(data2,1);  %按列求和 
C1b = find( b > 0);
 C1 = [C1a,C1b];
 C1 = unique(C1)';  %!!!!加了转置运算,按列存放
%  disp(C1);
 count1 = Count(C1,data1);
 count2 = Count(C1,data2);
 totalcount = count1 + count2;
%  disp(totalcount);
 L1 = C1(totalcount>=(size(data1,1)+size(data2,1))*minsup,:);
%  disp(L1);
 Lk = {L1};  
%large 2_items and more
%需要补充
[L2,idx]=apriori(data1,data2,minsup);
L2=L2(~ismember(L2,L1),:);
Lk=[Lk,L2(idx,:)];
%disp(Lk);
return
function [data] = getdatafromfile(filename)
global MAXITEM
fid = fopen(filename);%打开
data = [];
i = 0;
while ~feof(fid)%循环读取每一行
i = i+1;
tline{i,1} = fgetl(fid);%按行读取
line = str2num(tline{i,1});%转数值矩阵
temp = zeros(1,MAXITEM);%建立全零矩阵
temp(line) = 1;%一个项目出现在这个元组中,则相应位置设为1,否则为0
data = [data;temp];
end
fclose(fid);
return
function  count1 = Count(Ck,data)
%需要补充
count1=zeros(1,size(Ck,1));
for i=1,size(data,1)
    for j=1,size(Ck,1)
        if data(i) == Ck(j)
            count1(j,:) = count1(j,:) + 1;
            break;
        end
    end
end
return

运行结果:

[Lk,L1,L2] = para_Apriori('test3.txt','test5.txt',0.4)
ans =
5
ans =
10
ans =
7
ans =
10
未定义函数或变量 'apriori'。
出错 para_Apriori (line 24)
[L2,idx]=apriori(data1,data2,minsup);

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-10-18 17:18
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    根据您提供的代码,需要在para_Apriori函数中实现并行Apriori算法。其中出现了一个错误,即未定义函数或变量 'apriori'。因此,您需要补充实现apriori函数或确保该函数可用。

    以下是对代码进行修改的建议,以实现并行Apriori算法:

    function [Lk,L1,L2] = para_Apriori(filename1,filename2,minsup)
        % %调用方式: [Lk,L1,L2] = para_Apriori('test3.txt','test5.txt',0.4)
        global MAXITEM
        MAXITEM = 10;
        data1 = getdatafromfile(filename1);
        data2 = getdatafromfile(filename2);
        
        % large 1-items
        b = sum(data1,1);
        C1a = find(b > 0);
        b = sum(data2,1);
        C1b = find(b > 0);
        C1 = [C1a, C1b];
        C1 = unique(C1)';
        
        count1 = Count(C1, data1);
        count2 = Count(C1, data2);
        totalcount = count1 + count2;
        
        L1 = C1(totalcount >= (size(data1,1) + size(data2,1)) * minsup,:);
        Lk = {L1};
        
        % large 2_items and more
        L2 = apriori(data1, data2, minsup, L1);
        Lk = [Lk, L2];
        
        return
    end
    
    function [L2] = apriori(data1, data2, minsup, L1)
        % 需要补充
        % 实现Apriori算法计算large 2-items及更多的频繁项集
        % 可以参考单机版本的Apriori算法实现来进行并行化处理
        % L1为1-item频繁项集,可以用于生成2-item候选集
        % 返回L2为large 2-items频繁项集
        L2 = []; % 在这里存储large 2-items频繁项集
        % 补充并行化的Apriori算法代码
        % ...
        return
    end
    
    % 其他函数保持不变
    ...
    

    在上述修改中,我添加了一个新的函数apriori,用于实现并行化的Apriori算法来计算large 2-items及更多的频繁项集。您需要在该函数中补充并行化的Apriori算法代码。

    请注意,这只是对代码的修改建议,并不能保证完全正确或符合您的具体需求。您可能需要根据您的数据和实验要求进行进一步的调整和优化。同时,确保您在代码中使用的函数和变量都已定义或可用。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 修改了问题 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 VUE项目怎么运行,系统打不开