So erstellen Sie eine ARFF-Datei aus einem array in java?
Möchte ich, um die Koeffizienten einer gewichteten linearen regression von x-y-paar, dargestellt durch zwei arrays in java. Ich entdeckte weka, aber es ist zu Fragen, eine 'Instanzen' class-Objekt in der 'LinearRegression' Klasse. Die Schaffung einer 'Instanzen' class-Datei eine ARFF-Datei benötigt, welche die Daten enthält. Ich bin gekommen, über Lösungen, die die FastVector Klasse, aber das ist jetzt veraltet und in der aktuellen weka-version. Wie erstelle ich eine ARFF-Datei für die x-y-paar und die entsprechenden GEWICHTE alle vertreten durch arrays in java?
Hier ist mein code basiert auf Baz Antwort. Es gibt eine Ausnahme in der letzten Zeile "lr.buildClassifier(newDataset)" - Thread [main] (Suspended (exception UnassignedClassException))
Fähigkeiten.testWithFail(Instanzen) line: 1302 . Hier ist der code -
public static void test() throws Exception
{
double[][] data = {{4058.0, 4059.0, 4060.0, 214.0, 1710.0, 2452.0, 2473.0, 2474.0, 2475.0, 2476.0, 2477.0, 2478.0, 2688.0, 2905.0, 2906.0, 2907.0, 2908.0, 2909.0, 2950.0, 2969.0, 2970.0, 3202.0, 3342.0, 3900.0, 4007.0, 4052.0, 4058.0, 4059.0, 4060.0}, {19.0, 20.0, 21.0, 31.0, 103.0, 136.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 212.0, 243.0, 244.0, 245.0, 246.0, 247.0, 261.0, 270.0, 271.0, 294.0, 302.0, 340.0, 343.0, 354.0, 356.0, 357.0, 358.0}};
int numInstances = data[0].length;
ArrayList<Attribute> atts = new ArrayList<Attribute>();
List<Instance> instances = new ArrayList<Instance>();
for(int dim = 0; dim < 2; dim++)
{
Attribute current = new Attribute("Attribute" + dim, dim);
if(dim == 0)
{
for(int obj = 0; obj < numInstances; obj++)
{
instances.add(new SparseInstance(numInstances));
}
}
for(int obj = 0; obj < numInstances; obj++)
{
instances.get(obj).setValue(current, data[dim][obj]);
//instances.get(obj).setWeight(weights[obj]);
}
atts.add(current);
}
Instances newDataset = new Instances("Dataset", atts, instances.size());
for(Instance inst : instances)
newDataset.add(inst);
LinearRegression lr = new LinearRegression();
lr.buildClassifier(newDataset);
}
InformationsquelleAutor abhishek | 2012-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das könnte dir helfen:
Danach
Instances
ist Sie dataset.Hinweis: Die aktuellen version (3.6.8) von Weka haben sich nicht beschwert, obwohl ich früher
FastVector
.Jedoch für die Entwickler version (3.7.7), verwenden Sie diese:
Sie müssen mir sagen, welcher Fehler...
Ich habe die Ausnahme in der Frage.
Ähnlich wie die Antwort here Ihre Daten enthalten eine Klasse-index, also eine
Attribute
dass Staaten, zu welcher Klasse das Objekt gehört. Sie haben nicht diese Einstellung. Bitte beachten Sie die akzeptieren meine Antwort, wenn es funktioniert.Yup, das funktioniert! Dank einem Haufen!
InformationsquelleAutor Baz
Sie wollen, um den Bau einer Instanzen - Objekt, das die Klasse überschreibt
toString()
Ausgabe in ARFF-format. Wenn FastVector ist veraltet, Sie konnte einfach Vektor.InformationsquelleAutor The Cat