回 帖 发 新 帖 刷新版面

主题:[讨论]关于data mining的问题

一个关于association rule的问题,我之前没有用过matlab,现在用它编程很用不惯,请大家把忙看看,附件transaction1.txt是我要用的数据,第一列为transaction id,后面2-11则是购物车的选项,1为买,0为不买要求是编写2个函数,一个函数输入association rule得到support和confidence,即[s c]=association(tdata, a, b),tdata是数据, a和b都是数组,例如a=[2 3 4 5],b=[5 6 7],s是support, c是confidence,也就是tdata(:2).*tdata(:,3).*......=>tdata(:,5).*tdata(:,6)....我现在写的函数a和b都只能是整数如何改才可以带入数组啊,下面是我的整数带入的程序,可以运行

function [s c] = association(tdata, i, j)
[a b] = size(tdata)

x = tdata(:, i)
y = tdata(:, j)

p_i = sum(x)/a
p_j = sum(y)/a
z = x.*y
s = sum(z)/a
c = sum(z)/sum(x)


下面这个是我写的数组程序。。。完全不知道怎么写
他的思路我是这么想的:
A=[2 3 4 5]
B=[6 7 8]
i2=d(:,2)
i3=d(:,3)
i4=d(:,4)
i5=d(:,5)
i6=d(:,6)
i7=d(:,7)
i8=d(:,8)

sa_1=i2.*i3
sa_2=sa_1.*i4
sa_3=sa_2.*i5

sab_1=sa_3.*i6
sab_2=sab_1.*i7
sab_3= sab_2.*i8

Support_ab = sum(sab_3)/1000
Conf = sum(sab_3)/sum(sa)

代码:

function [s c] = ass_itset(tdata, a, b)

[p q]=size(tdata)

for i=1:(q-1)
    s[i]=tdata(:,i);
end

[m n]=size(a)
    sa=(s(a(1)).*s(a(2)));
if (n>=3)
    for j=3:n
        sa=sa.*s(a(j));
    end
end

[t r] = size(b)
for k=1:r
    sab = sa.*s(b(k));
end

s=sum(sab)/p;
c=sum(sab)/sa;
请各位大虾帮忙看看,对matlab真的是没辙了

回复列表 (共2个回复)

沙发


自己顶起,问题已解决

板凳

只要注意将函数内部算式相应的*和/改为.*和./即可带入矩阵运算,另外乘方该为.^2或者 .^3等等

我来回复

您尚未登录,请登录后再回复。点此登录或注册