더북(TheBook)

클러스터 만들기

main 메서드 안에 있는 WekaCluster 생성자는 웨카 API를 사용하여 클러스터 구성을 담당한다. 앞의 예제와 같이 SimpleKMeans 클래스를 사용하여 클러스터를 만든다.

생성자에 작성할 코드의 양은 적다. 필요한 작업은 웨카에서 알아서 처리하므로 준비할 게 많지 않기 때문이다.


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();
    }
}

 

데이터는 DataSource.read() 메서드를 사용하여 읽어들인다. 이 메서드는 문자열로 된 파일 경로(InputStream을 더 선호한다)를 받아 데이터를 인스턴스에 저장한다.

그 다음, 경험에 따른 법칙에 따라 앞서 만든 메서드를 사용하여 정의할 클러스터의 개수를 구한다.

클러스터의 실제 구성은 그 다음 네 줄에서 다뤄진다. SimpleKMeans 클래스는 이전 워크벤치와 명령줄에서 사용하던 것과 같다. 정의할 클러스터의 개수(setNumClusters())와 난수 시드값(with setSeed())을 설정하고 클러스터를 구성한다.

마지막으로 메서드 두 개를 호출한다. 하나는 각 클러스터의 센트로이드 위치를 보여주고, 나머지 하나는 인스턴스가 어느 클러스터에 속하는지 보여준다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.