Kmeans1.m pembentukanCls.m

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