Làm cách nào để tính xác suất dự đoán của một lớp trong Java Weka Api?


9

Tôi đang phát triển một mô hình dự đoán bằng cách sử dụng Java Weka api. Tôi có thể dự đoán lớp cho trường hợp mới bằng cách sử dụng đoạn mã sau:

double predictClass = classifer.classifyInstance(instance)

Tuy nhiên, tôi cần xác suất lớp thay vì giá trị lớp. Cảm ơn trước sự ủng hộ của bạn.

Câu trả lời:


8

Chào mừng đến với cộng đồng! Bạn có thể thay thế mã của bạn bằng mã sau đây.

double[] prediction=classifier.distributionForInstance(instance);

    for (int k<prediction.length; k++){
    System.out.println("Probability of class "+
      trains.classAttribute().value(k)+
       " : "+Double.toString(prediction[k]));
      }

Vòng lặp này in tất cả bốn giá trị.
Hy vọng nó sẽ giúp bạn.


1
Cảm ơn cho phản ứng nhanh chóng của bạn. Nhưng, tôi không hiểu chính xác classifier.distributionForInstance (ví dụ) trả về chính xác
Howa Begum

1
@HowaBegum bạn có thể thấy giá trị trả về bằng cách in nội dung dự đoán biến. Nó sẽ trả về bốn giá trị như lớp o, xác suất dự đoán, lớp 1, xác suất dự đoán. Hy vọng bạn hiểu
Rejaul Karim

1
Cảm ơn một lần nữa vì sự giúp đỡ của bạn. Nó thực sự giúp tôi rất nhiều.
Howa Begum

1
Tôi vui vì nó đã giúp.
Rejaul Karim

1

Đó là công việc tốt, cảm ơn rất nhiều. Có một số điều chỉnh:

    //Dont forget create new Instance for prediction.
    DenseInstance newinstance = new DenseInstance(2);
    double[] prediction=classifier.distributionForInstance(newinstance);
    //Some correction in for 
        for (int k =0; k<prediction.length; k++){
            System.out.println("Probability of class "+
                    newinstance.classAttribute().value(k)+
                    " : "+Double.toString(prediction[k]));
        }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.