[tr, tr_target] = load ('bibtex.csv') [P,PN,M,MN,s,sN] = iMLNB_train(tr,tr_target,1) m = iMLNB_model(tr,tr_target, P,PN,M,MN,s,sN) function [P,PN,M,MN,s,sN]=iMLNB_train(tr,tr_target,S) % imlnb training [nc,nt]=size(tr_target); [nt,D]=size(tr); for i=1:nc t=sum(tr_target(i,:)==ones(1,nt)); P(i,1)=(S+t)/(S*2+nt); Pn(i,1)=1-Prior(i,1); [X,in]=sort(tr_target(i,:),'descend'); in1=in(1:t); in2=in(t+1:nt); tr_p=tr(in1,:); tr_n=tr(in2,:); for j=1:D [M(i,j),s(i,j)]=cartprod(normfit(tr_p(:,j)),binopdf(tr_p(:,j+1:n))); [MN(i,j),sN(i,j)]=cartprod(normfit(tr_n(:,j)), binopdf(tr_n(:,j+1:n))); end end function model=iMLNB_model(td,td_target,P,PN,M,MN,s,sN) % model nr=sum(features); [temp,ind]=sort(features,'descend'); ind=ind(1:nr); dim=size(td,1); model=0; for i=1:dim [HL,RL,OE,cover,AP,Y,pre]=iMLNB(td{i,1}(:,ind),td_target{i,1},P{i,1},PN{i,1},M{i,1}(:,ind),MN{i,1}(:,ind),s{i,1}(:,ind),sN{i,1}(:,index)); model=model+(HL+RL)/2; end model=model/dim; function HL=HL(pre,td_target) % Hamming loss [nc,n]=size(pre); miss_samples=sum(sum(pre ~=td_target)); HL=miss_samples/(nc*n);