2015-04-16 2 views
0

Я применяю кластеры EM в weka для кластера, некоторые точки (x, y, z). Я написал EM на моем JAVA коде:Использование кластеризации EM с weka в моем коде JAVA?

EM em = new EM(); 
em.setDebug(false); 
em.setDisplayModelInOldFormat(false); 
em.setMaxIterations(100); 
em.setMinStdDev(0.000001); 
em.buildClusterer(data_to_use); 

Когда хотят построить (последнюю строку), то получите ошибку, которая может это из-за него получить только один кластер. Как я могу исправить эту ошибку?

+1

Какая ошибка? – Pace

+0

Серьезно, вам нужно сообщить нам сообщение об ошибке, если вы хотите, чтобы мы помогли ... также подумайте об использовании ELKI. Это намного быстрее для меня и имеет больше алгоритмов кластеризации. –

+0

Извините за мой поздний повтор. Ошибка: «weka.core.WekaException: weka.clusterers.EM: Недостаточно учебных экземпляров (обязательно: 1, при условии: 0)!» –

ответ

0

Вы пытались обойтись без каких-либо дополнительных параметров? например

EM clusterer = new EM(); 
    clusterer.buildClusterer(dataClusterer); 

Попробуйте использовать фильтр, чтобы забрать класс, или же он будет рассматривать это как особенность и, следовательно, генерировать только 1 кластер, вы можете использовать:

// generate data for clusterer (w/o class) 
    Remove filter = new Remove(); 
    filter.setAttributeIndices("" + (data.classIndex() + 1)); 
    try { 
     filter.setInputFormat(data); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    Instances dataClusterer = Filter.useFilter(data, filter); 

    // train clusterer 
    EM clusterer = new EM(); 

    // set further options for EM, if necessary... 
    // clusterer.setNumClusters(maxNumofClusters); //-1 for n number of clusters 
    clusterer.buildClusterer(dataClusterer); 

Альтернативой также оценить непосредственно в weka (создать arff)

ура

+0

TNX для вашего воспроизведения. Доза не работает для меня. Я не знаю почему. Вместо этого я предпочитаю использовать «try_catch». –

Смежные вопросы