设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1253|回复: 0

数据挖掘:数据挖掘Apriori算法

[复制链接]

20

主题

162

金钱

264

积分

入门用户

发表于 2019-6-14 15:30:19 | 显示全部楼层 |阅读模式

代码:
  1. %本文件生成了频繁项集
  2. clear all;
  3. clc;
  4. TotalSheet=[];
  5. dbstop if error;


  6. brand_name=csvread('./data/data.csv');
  7. brand_name=brand_name(:,2);
  8. brand_name=unique(brand_name);



  9. thconf=0.6;%最小置信度阈值
  10. load('./data/table');
  11. X=table;
  12. [m,n]=size(X);
  13. D=X;
  14. th=ceil(0.1*m);
  15. %%
  16. %寻找频繁1项集

  17. C1=sum(D);
  18. C1=C1';
  19. C1=[[1:n]' C1];

  20. L1=C1;
  21. support=L1(:,2);
  22. L1(find(support<th),:)=[];

  23. TotalSheet{1}=L1;

  24. %%
  25. %生成频繁2项集

  26. C2=combntns(L1(:,1),2);
  27. temp=[];
  28. for i=1:size(C2)
  29.     %项目
  30.     temp{i,1}=C2(i,:);
  31.    
  32.     %支持数
  33.     sum=0;
  34.    
  35.     [p,q]=size(D);
  36.     for j=1:p
  37.     if all(D(j,C2(i,:)))
  38.         sum=sum+1;
  39.     end
  40.     end
  41.     temp{i,2}=sum;
  42.    
  43. end
  44. C2=temp;

  45. L2=C2;
  46. support=cell2mat(L2(:,2));
  47. index=find(support<th);
  48. L2(index,:)=[];

  49. TotalSheet{2}=L2;

  50. %%
  51. for k=3:6



  52. %生成频繁k(k>=3)项集
  53. L3=[];
  54. C3=cell2mat(L2(:,1));

  55. [mm,nn]=size(C3);
  56. item_num=mm;
  57. if item_num<2
  58.     break;
  59. end
  60. comb_index=combntns(1:item_num,2);
  61. %按排列组合的方式进行联合
  62. j=1;
  63. for i=1:size(comb_index,1)
  64. comb_temp=union(L2{comb_index(i,:),1});
  65. len=size(comb_temp,1);
  66. len2=size(L2{1,1},1);
  67. %判断是否只差一个元素
  68. if len~=len2+1
  69.     continue;
  70. end
  71. %判断子集是否都存在
  72. sub_comb=combntns(comb_temp,len-1);

  73. if size(intersect(sub_comb,C3,'rows'),1)~=size(sub_comb,1)
  74.     continue;
  75. end
  76. L3{j,1}=comb_temp;
  77. j=j+1;
  78. end
  79. C3=[];
  80. for i=1:size(L3,1)
  81.     C3(i,:)=L3{i,1};
  82. end

  83. temp=[];

  84. for i=1:size(C3)
  85.     %项目
  86.     temp{i,1}=C3(i,:);
  87.    
  88.     %支持数
  89.     sum=0;
  90.    
  91.     for j=1:m
  92.     if all(D(j,C3(i,:)))
  93.         sum=sum+1;
  94.     end
  95.     end
  96.     temp{i,2}=sum;
  97.    
  98. end
  99. L3=temp;
  100. if size(L3,1)==0
  101.     break;
  102. end

  103. support=cell2mat(L3(:,2));
  104. index=find(support<th);
  105. L3(index,:)=[];


  106. TotalSheet{k}=L3;
  107. L2=L3;
  108. k
  109. end
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表