2017-01-03 4 views
0

Angenommen, die Irisdaten haben 3 eindeutige Klassenwerte.Weka: Wie findet man Distince-Werte eines Attributs?

@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica} 

Wie kann ich diese Werte mit der Weka API erhalten? Der nächstgelegene ich finden konnte, ist numDistinctValues ​​(), die ich zur Zeit als

System.out.println(data.numDistinctValues(data.numAttributes()-1)); 

, dies jedoch nur dann verwenden, gibt die eindeutige Anzahl der Klassen, dh 3. Ich die tatsächlichen Werte, dh die Klasse Labels „erhalten möchten Iris- setosa, Iris-versicolor, Iris-virginica ".

Wir können verschiedene Klassenwerte mit der Instanz() finden, indem wir alle Klassenlabels für jede Instanz extrahieren und dann eindeutige Werte aus ihnen finden. Gibt es eine direkte Möglichkeit, diese Informationen direkt aus der Datensatzbeschreibung im ARFF-Format zu extrahieren? die entsprechenden Werte um den Wert zu finden, unter Verwendung von() Methode

Antwort

2

fand ich eine einfache Lösung

for (int i=0;i<data.classAttribute().numValues();i++) { 
     System.out.println(data.classAttribute().value(i)); 
    } 

Grundsätzlich wir die Anzahl der Werte in der Klassenattribut finden und dann auf diese Zahl iterieren.

0

Für numerische Attribute, können Sie diesen Code verwenden, um die Reichweite Ihrer Daten zu erhalten:

AttributeStats as = instances.attributeStats(index); 
double min = as.numericStats.min; 
double max = as.numericStats.max; 
Verwandte Themen