최종 코드
다음은 지금까지 설명한 WekaCluster의 전체 코드로 바로 실행할 수 있다.
import java.util.Random; import weka.clusterers.SimpleKMeans; import weka.core.Instance; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; public class WekaCluster { public WekaCluster(String filepath) { try { Instances data = DataSource.read(filepath); int clusters = calculateRuleOfThumb(data.numInstances()); System.out.println(“Rule of Thumb Clusters = “ + clusters); SimpleKMeans kMeans = new SimpleKMeans(); kMeans.setNumClusters(clusters); kMeans.setSeed(42); kMeans.buildClusterer(data); showCentroids(kMeans, data); showInstanceInCluster(kMeans, data); } catch (Exception e) { e.printStackTrace(); } } public int calculateRuleOfThumb(int rows) { return (int)Math.sqrt(rows/2); } public void showCentroids(SimpleKMeans kMeans, Instances data) { Instances centroids = kMeans.getClusterCentroids(); for (int i = 0; i < centroids.numInstances(); i++) { System.out.println(“Centroid: “ + i + “: “ + centroids.instance(i)); } } public void showInstanceInCluster(SimpleKMeans kMeans, Instances data) { try { for (int i = 0; i < data.numInstances(); i++) { System.out.println(“Instance “ + i + ” is in cluster “ + kMeans.clusterInstance(data.instance(i))); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { // .arff 파일 위치와 원하는 클러스터의 수를 전달한다. WekaCluster wc = new WekaCluster(”/Users/Jason/kmeandata.arff”); } }