2014-09-04 1 views
4

이 라이브러리를 Java로 사용하는 예를 많이 읽고, ARFF 데이터 파일로부터 클러스터링이 가능합니다.k- weka java 코드를 의미합니다

그러나 내 프로그램을 작업하는 동안 생성되는 이중 목록에 자체 데이터가 있으며이 k-means 알고리즘을 사용하여 데이터를 클러스터링하는 방법을 모르겠습니다. 이것은 하나의 차원 목록입니다. 내가 iris.arff 파일에서 데이터를 읽고이 작동하고

Instances dataa = DataSource.read("C:\\Users\\Ew\\Documents\\iris.arff"); 


    // create the model 
    kMeans = new SimpleKMeans(); 
    kMeans.setNumClusters(3); 
    kMeans.buildClusterer(dataa); 

    // print out the cluster centroids 
    Instances centroids = kMeans.getClusterCentroids(); 
    for (int i = 0; i < centroids.numInstances(); i++) { 
     System.out.println("Centroid " + i+1 + ": " + centroids.instance(i)); 
    } 

    // get cluster membership for each instance 
    for (int i = 0; i < dataa.numInstances(); i++) { 
     System.out.println(dataa.instance(i) + " is in cluster " + kMeans.clusterInstance(dataa.instance(i)) + 1); 

    } 

:

그것은 내 코드입니다. 이제 저는 k에 매개 변수로주고 싶습니다 - 내 List of double을 의미합니다. 내가 어떻게 해?

미리 답변 해 주셔서 감사합니다.

감사합니다.

+1

k에서 무엇을 이해하지 못 했습니까? –

+0

당신이 나를 보여줄 수 있다면 어떻게 weka 라이브러리 대신 arff 파일에서이 알고리즘으로 내 자신의 데이터를 사용할 수 있습니까? – darson1991

답변

1

DataSource에서 읽음으로써 Instances 세트를 만들고 싶지 않은 경우 Instance 인터페이스를 구현하는 클래스 중 하나를 사용하여 수동으로 만들 수도 있습니다. a DenseInstance. javadoc의 예제 코드를 참조하십시오.

// Create empty instance with three attribute values 
Instance inst = new DenseInstance(3); 

// Set instance's values for the attributes "length", "weight", and "position" 
inst.setValue(length, 5.3); 
inst.setValue(weight, 300); 
inst.setValue(position, "first"); 

// Set instance's dataset to be the dataset "race" 
inst.setDataset(race); 

희망이 있습니다.