WEKA tôi ra chương trình:WEKA - làm thế nào để in không đúng trường hợp được phân loại
Correctly Classified Instances 32083 94.0244 %
Incorrectly Classified Instances 2039 5.9756 %
Tôi muốn để có thể in ra những gì các trường hợp không chính xác là vì vậy tôi có thể thực hiện điều chỉnh và hiểu lý do tại sao họ đã phân loại sai.
phương thức in của tôi ở bên dưới.
Tôi đang cố gắng tìm các trường hợp có giá trị lớp được dự đoán không bằng với giá trị lớp thực tế và sau đó in các thuộc tính của nó.
nhưng khi tôi thực hiện điều này, việc liệt kê thuộc tính không in được gì.
Có ai có đề xuất về cách in ra các phiên bản được phân loại sai không?
cảm ơn nhiều.
private void printSummary(Classifier base, Evaluation eval, Instances data) throws Exception
{
// output evaluation
System.out.println();
System.out.println("=== Setup ===");
System.out.println("Classifier: " + classifierName.getClass().getName() + " " + Utils.joinOptions(base.getOptions()));
System.out.println("Dataset: " + data.relationName());
System.out.println();
// output predictions
System.out.println("# - actual - predicted - error - distribution - token");
for (int i = 0; i < data.numInstances(); i++)
{
double pred = base.classifyInstance(data.instance(i));
double actual = data.instance(i).classValue();
double[] dist = base.distributionForInstance(data.instance(i));
if (pred != actual)
{
System.out.print((i+1));
System.out.print(" - ");
System.out.print(data.instance(i).toString(data.classIndex()));
System.out.print(" - ");
System.out.print(data.classAttribute().value((int) pred));
System.out.print(" - ");
if (pred != data.instance(i).classValue())
System.out.print("yes");
else
System.out.print("no");
System.out.print(" - ");
System.out.print(Utils.arrayToString(dist));
System.out.print(" - ");
data.instance(i).enumerateAttributes().toString();
System.out.println();
}
}
System.out.println(eval.toSummaryString());
System.out.println(eval.toClassDetailsString());
System.out.println(eval.toMatrixString());
}
tôi chỉ nhận ra rằng nó trống vì tôi quên bọc nó trong một bản in. – britt
không may thêm nó vào lệnh in hoặc lặp qua các giá trị của enum chỉ cho tôi thấy tất cả các giá trị có thể có của tất cả các thuộc tính. nó không thực sự cho tôi biết giá trị attrib là gì đối với các trường hợp bị phân loại sai của tôi. Bất kỳ trợ giúp nào cũng được đánh giá rất cao. – britt
Tôi hiểu, "Weka đầu ra" là từ Weka Explorer? Nếu vậy, các kết quả này là để xác thực chéo, và bạn hầu hết có thể thực hiện các thử nghiệm theo một cách khác. Trước khi đi sâu vào mã, bạn có thể thực hiện một phép thử đơn giản hay không - thêm mệnh đề 'else' vào' if' của bạn và đếm số thực thể được phân loại chính xác ('pred == actual')? – ffriend