더북(TheBook)

예측하기

지금까지 프로그램은 클러스터를 만들고 인스턴스 결과를 보고했다. 새로운 데이터가 들어오면 어떻게 될까? 현재로서는 아무것도 예측할 수 없다. 새로운 값을 받아 결과가 어느 클러스터로 묶일지 예측하는 방법이 있으면 좋을 것이다.

코드를 통해 인스턴스가 만들어지면 클러스터링 모델을 실행하여 새로운 값이 어디에 놓이는지 알 수 있다. 그리고 또 다른 메서드를 만들어 클러스터를 예측할 수 있다.


public int predictCluster(SimpleKMeans kMeans, double x, double y) {
    int clusterNumber = -1;
     try {
        double[] newdata = new double[] { x, y };
        Instance testInstance = new Instance(1.0, newdata);
        clusterNumber = kMeans.clusterInstance(testInstance);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return clusterNumber;
}

 

여러분은 모델과 xy변수의 값을 전달하였다(원본 데이터가 두 속성 내에 있는 것과 같다). double 배열이 생성되고 두 값이 저장된다.

Instance 클래스가 생성된다. 첫 번째 값은 인스턴스에 할당될 가중치다. 가중치는 0과 1 사이의 값이다. 두 번째 값은 x와 y값으로 만든 double array이다.

clusterInstance() 메서드를 사용한 것과 같은 방식으로 새로운 인스턴스를 실행하고 클러스터 번호를 얻는다. 이 값은 호출한 메서드로 반환될 것이다.

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