2012-01-10 14 views
0

javaでのKMeansクラスタリング用のコードの生成に問題があります。私はすでにアルゴリズムを知っていますが、Javaコードで記述するのは非常に難しいです。 私の割り当ては、データベースからデータを取り出し、KMeansでクラスタリングを実行することです。この場合、データはまずRecursiveバイナリツリー構造で形成されなければなりません。 シナリオは、I(第一親ノードを作成する親がNULLである場合、そのノードと親との関係KMeansでのデータクラスタリングバイナリツリー構造を使用したアルゴリズム

  • データベースからすべてのデータを盗ん作成= 0

  • global_iterationを設定

    1. あります

    2. (データセットの場合)< outlierSizeこのノードを異常値としてマークする(outlierSizeはプログラマによって指定されています)次に停止します。

    3. (プログラマで述べた)データセット< maxIteration場合は、データセットから

    4. 計算重心(このケースでは、我々は、バイナリツリーを構築2原因である)

    5. カル関数kmeansクラス

    6. を停止global_iteration ++

    7. 各データセットについて:再帰を続行します。

    次に、ノードに挿入するために呼び出されるクラスKMeansを作成する必要があります。

    関数kmeansは、(データセットは、kは、maxIteration、minChange)

    備考:クラスタのK =数は、minChange:重心変化時値は、クラスタリングがまだ処理すべきか否か、そのパラメータことができます。 Kmeansのクラスタリングは、Kommeansのアルゴリズムとまったく同じです。

    はこの割り当てをやって私を助けてどうもありがとうございます:)

  • +0

    これが宿題に関する質問であれば、そのようにタグを付けてください。それ以外の場合は、おそらくあなたはホイールを再開発し、簡単にinterwebから入手可能なものを取ることを望んでいない。 – Pieter

    答えて

    0

    チェックWekaソースcode for K-Meansを、それが問題にアプローチするのに役立ちますことがあります。

    +0

    まだ分かりませんが、誰かが私に例を教えていただけますか?私はJavaの初心者です – fobiacristy

    +0

    これは宿題解決サイトではありません。あなた自身でそれを試して、すでに作ったものに関する質問をしてください。 – JuanZe

    0
    You can implement k-means algorithm as: 
    SimpleKMeans kmeans = new SimpleKMeans(); 
    
    kmeans.setSeed(10); 
    
    // This is the important parameter to set 
    kmeans.setPreserveInstancesOrder(true); 
    kmeans.setNumClusters(numberOfClusters); 
    kmeans.buildClusterer(instances); 
    
    // This array returns the cluster number (starting with 0) for each instance 
    // The array has as many elements as the number of instances 
    int[] assignments = kmeans.getAssignments(); 
    
    int i=0; 
    for(int clusterNum : assignments) { 
    System.out.printf("Instance %d -> Cluster %d", i, clusterNum); 
    i++; 
    } 
    
    +0

    彼はWeka k-meansを使いたくないかもしれませんが、バイナリツリー構造を利用するk-meansの*より効率的なバリエーションを実装します。しかし、とにかく、この質問は2歳です。彼の "譲渡"はすでに終わったと思う。 –

    関連する問題