1

トレーニング後にどのインスタンスがさまざまなクラスターに割り当てられているかを確認するために、AddCluster フィルターで EM クラスターを使用しています。以下は私が使用しているコードです。フィルターを正しく適用しているかどうか確信が持てませんが、新しいインスタンスを取得しても、それらからクラスター情報を取得する方法がわかりません。単純な getBlah() 呼び出しだと確信していますが、私はそれを見つけていません。前もって感謝します。

public Cluster()
{
    clusterer = new EM();
    filter = new AddCluster();

    try
    {
        clusterer.setMaxIterations(100);
        clusterer.setNumClusters(20);
        filter.setClusterer(clusterer);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

public void buildCluster(String fileName)
{
    try
    {
        DataSource source = new DataSource(fileName);
        inst = source.getDataSet();
        filter.setInputFormat(inst);
        inst = AddCluster.useFilter(inst, filter);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
4

1 に答える 1

0

「辞書」クラスを使用する必要があると思います。これが私のコード例です:

Enumeration clusteredInst = data_to_use.enumerateInstances();<br> 
Dictionary<Integer, ArrayList<Instance>> clusteredSamples = new ashtable<>();


while (clusteredInst.hasMoreElements()) {<br> 
            Instance ins = (Instance) clusteredInst.nextElement();<br> 
            int clusterNumb = em.clusterInstance(ins);<br> 
            ArrayList<Instance> cls = null;<br> 
            cls = clusteredSamples.get(clusterNumb);<br> 
            if (cls != null) {<br> 
                cls.add(ins);<br> 
            } else {<br> 
                cls = new ArrayList<>();<br> 
                cls.add(ins);<br> 
                //you add elements to dictionary using put method<br> 
                //put(key, value)<br> 
                clusteredSamples.put(clusterNumb, cls);<br> 
            }
        }

また、キーを呼び出して辞書からデータを取得することもできます。

于 2015-04-16T08:25:03.393 に答える