95
dataTemp2x,1=jmlPerKataUniki,1; dataTemp3{x,1}=kataUnik{i,1};
x=x+1; else
dataTemp4y,1=jmlPerKataUniki,1; dataTemp5{y,1}=kataUnik{i,1};
y=y+1; end
end jmlPerKataUnik= dataTemp2;
kataUnik= dataTemp3; jmlSelainKataUnik{k}=dataTemp4;
selainKataUnik{k}=dataTemp5; countKataUnik = sumjmlPerKataUnik;
[m,n]=sizejmlPerKataUnik; matrixBobot=zerosm,n;
for i=1:m
matrixBoboti=log10countKataUnikjmlPerKataUniki; end
calonData=zerossizematrixBobot,1,N; for
i=1:N tempMatrixFile=matrixFIle{i};
[m,n]=sizetempMatrixFile; for
j=1:m [row,~] =
findismemberkataUnik,tempMatrixFilej,1; calonDatarow, i=matrixBobotrow,1;
end end
calonDataCell{k}=calonData; end
assignin base
, jmlSelainKataUnik
,jmlSelainKataUnik; assignin
base ,
selainKataUnik ,selainKataUnik;
assignin base
, jmlSelainKataUnik
,jmlSelainKataUnik; assignin
base ,
selainKataUnik ,selainKataUnik;
end
4. Kmeans1.m
function [cluster,centroid,counter,dist]=Kmeans1N,data,k,option,
inisial_centroid 1- Random pilih centroid
96
2- 4pertama else 12 maka centroid=inisal centroid
centroid=[]; cluster=[];
[n,m]=sizedata; selected=[];
inisal centroid awal berdasarkan option if
option==1 index=12;
for i=1:k
index=uint16randn; while
Existsselected,index==1 index=uint16randn;
end selected=[selected index];
centroidi,:=dataindex,:; end
elseif option==2
centroid1:3,:=data1:3,:; elseif
option==3 centroid=dataN+1:end,:;
data=data1:N,:; else
centroid=inisial_centroid; end
flag=0; count=0;
counter=[];
pelompokkan data while
flag==0 [dist,cluster,dist]=Distancecentroid,data;
dist punya matlab kelesss
if count~=0
temp=cluster==prevclass; if
maxmaxtemp==1 minmintemp==1 flag=1;
counter; break
; end
end prevclass=cluster;
97
[centroid,counter]=CalculateCentroidcentroid,cluster,data; count=count+1;
end hitung CARI Centroid baru
function [centroidBaru,counter]=CalculateCentroidcentroid,class,data
[n,m]=sizedata; [k,l]=sizecentroid;
centroidBaru=zerosk,l; counter=zerosk,1;
for j=1:k
for i=1:n
if classi,1==j
for p=1:m
centroidBaruj,p=centroidBaruj,p+datai,p; end
counterj,1=counterj,1+1; end
end end
for j=1:k
for p=1:m
centroidBaruj,p= centroidBaruj,pcounterj,1; end
end Function untuk cek apakah item data sudah dipilih sebagai
initial centroid function
[flag] = ExistsArr, item flag=0;
[n,m]=sizeArr; for
i=1:m if
Arr1,i==item flag=1;
break ;
end end
hitung distance dan menandai cluster function
[dist,classify,d]=Distancecentroid,data [n,m]=sizedata;
[k,l]=sizecentroid; dist=[];
98
classify=[]; for
i=1:k for
j=1:n hitung distance setiap centroid dengan tiap data
sum=0; for
p=1:m sum=sum+dataj,p-centroidi,p2;
end disti,j=sum0.5;
end end
d=dist; for
j=1:n [~,mindex]=mindist:,j;
classifyj,1=mindex; end
5. pembentukanCls.m
function [calonData,dist,SSE,jmlObyekCls,pembagianCls,cPusat,clusterS
ingle] = pembentukanClscalonData,N,jmlCluster,jmlObyekCls UNTITLED Summary of this function goes here
Detailed explanation goes here hasilKmeans=[];
for i=1:jmlObyekCls
[~,centroid,~,~]=Kmeans1N,calonData,3,1,1; hasilKmeans=[hasilKmeans;centroid];
okAGROW end
assignin base
, hasilKmeans
,hasilKmeans; Clustering Single
clusterSingle=linkagehasilKmeans, single
, euclidean
; [~,n]=sizehasilKmeans;
T=clusterclusterSingle, maxclust
,jmlCluster; centroid awal set manual
centro=[]; for
i=1:jmlCluster cls=findT==i;
centroTemp=zerossizecls,2,n; for
j=1:sizecls,2
99
centroTempj,:=hasilKmeansclsj,:; end
centroTemp=meancentroTemp,1; centro=[centro;centroTemp];
end calonData=[calonData;centro];
[pembagianCls,cPusat,jmlObyekCls,dist]=Kmeans1N,calonData,3 ,3,1;
assignin
base ,
dist ,dist;
[ nilaiSSE ] = hitungSSE dist ; SSE=nilaiSSE;
End
6. hitungSSE.m