剛剛學了資料探勘的這個演算法,馬上實現下,怕忘掉了。。感覺matlab的好處就是矩陣可以一起進行邏輯運算,不過我沒有進行預處理,輸入的資料集儲存在txt檔案裡,且都是以0-1矩陣構成的,不考慮出現次數。輸出只實現了得到k-頻繁項集,沒有計算最終的關聯規則。。那個感覺要遍歷什麼的,用矩陣列舉???還沒想到怎麼弄。。。。
現在就貼貼**,可能存在很多地方沒有考慮到,,希望各位大神指點。。。。。謝謝。。
從k頻繁項集得到k+1頻繁項集,通過兩個k頻繁項向量進行或運算得到。。
剪枝判斷k+1-候選項的子串是否在k頻繁項集中存在,通過向量 異或 xor來判斷
統計支援度 提取資料集中指定列 進行與運算 再通過 sum 求和計算 支援度。。
%修改 原來判斷兩向量是否相等 matlab可以直接用==來判斷 如向量 a,b 若用 a==b 等到新的向量 其中若對應位置相等 則為1 否則為0 。。所以好像可以改下下(
% 求真子集 matlab可以用combntns函式 等改 。。
1、init.m
初始化函式,得到1-頻繁項集及支援度,輸入資料集和最小支援度
function [l a]=init(d,min_sup) %d表示資料集 min_sup 最小支援度
[m n]=size(d);
a=eye(m,n);
b=(sum(d))';
i=1;
while(i<=m)
if b(i)2、apriori_gen.m
function [c]=apriori_gen(a,k)%產生ck(實現組內連線及剪枝 )
%a表示第k-1次的頻繁項集 k表示第k-頻繁項集
[m n]=size(a);
c=zeros(0,n);
%組內連線
for i=1:1:m
for j=i+1:1:m
flag=1;
for t=1:1:k-1
if ~(a(i,t)==a(j,t))
flag=0;
break;
endend
if flag==0 break;
endc=a(i,:)|a(j,:);
flag=i***it(c,a); %剪枝
if(flag==1)c=[c;c];
endend
end
3、 i***it.m
function flag=i***it(c,a)%判斷c串的子串在a中是否存在
[m n]=size(a);
b=c;
for i=1:1:n
c=b;
if c(i)==0 continue
endc(i)=0;
flag=0;
for j=1:1:m
a(j,:);
a=sum(xor(c,a(j,:)));
if a==0
flag=1;
break;
endend
if flag==0 return
endend
4、get_k_itemset.m
function [l c]=get_k_itemset(d,c,min_sup)%d為資料集 c為第k次剪枝後的候選集 獲得第k次的頻繁項集
m=size(c,1);
m=zeros(m,1);
t=size(d,1);
i=1;
while i<=m
c(i,:);
h=ones(t,1);
ind=find(c(i,:)==1);
n=size(ind,2);
for j=1:1:n
d(:,ind(j));
h=h&d(:,ind(j));
endx=sum(h');
if x
5、主函式 apriori.m
function [l]=apriori(d,min_sup)
[l a]=init(d,min_sup)%a為1-頻繁項集 l中為包含1-頻繁項集以及對應的支援度
k=1;
c=apriori_gen(a,k) %產生2項的集合
while ~(size(c,1)==0)
[m c]=get_k_itemset(d,c,min_sup)%產生k-頻繁項集 m是帶支援度 c不帶
if ~(size(m,1)==0)l=[l;m]
endk=k+1;
c=apriori_gen(c,k)%產生組合及剪枝後的候選集
end
舉例資料集
abc =
1 1 1 1 0
0 1 1 0 1
1 1 1 0 1
0 1 0 1 1
1 1 1 1 0
輸入:apriori(abc,3)
輸出:
頻繁項集+支援度
matlab實現基本離群點檢測
運用matlab實現最基本的離群點診斷,採用歐式距離,並輸出兩點離群因子的比較的視覺化 clc,close all sdata xlsread data.xlsx of2 7,10,2,sdata function of2 x,y,k,data 比較兩點離群因子 x,y 需要比較的兩點的id k 定...
Matlab基本函式
conndef 建立連通矩陣 imbothat 執行bottom hat濾波 imclearborder 抑制邊緣亮結構 imclose 灰度影象或二值影象的閉運算 imdilate 灰度影象或二值影象的膨脹運算 imerode 灰度影象或二值影象的腐蝕運算 imextendedmax 擴充套件極大...
Matlab基本運算
一.基本矩陣指令 reshape a,m,n 將a變成m n型矩陣 rot90 a 將a逆時針旋轉90度 fliplr a 左右翻轉 flipud a 上下翻轉 size a 求矩陣a的尺寸大小,返回值為a的行數和列數,故前面的返回值應為兩個。另外,a a m,選出a的第m行 b a n 選出a的第...