Trong suốt câu trả lời này, mat
là ma trận nhầm lẫn mà bạn miêu tả.
Bạn có thể tính toán và lưu trữ chính xác với:
(accuracy <- sum(diag(mat))/sum(mat))
# [1] 0.9333333
chính xác dùng cho mỗi lớp (giả định các dự đoán này trên các hàng và kết quả đúng là trên các cột) có thể được tính bằng:
(precision <- diag(mat)/rowSums(mat))
# setosa versicolor virginica
# 1.0000000 0.9090909 0.8750000
Nếu bạn muốn lấy chính xác cho một lớp học đặc biệt, bạn có thể làm:
(precision.versicolor <- precision["versicolor"])
# versicolor
# 0.9090909
Nhớ lại cho mỗi lớp học (một lần nữa giả dự đoán là trên các hàng và kết quả đúng là trên các cột) có thể được tính toán với:
recall <- (diag(mat)/colSums(mat))
# setosa versicolor virginica
# 1.0000000 0.8695652 0.9130435
Nếu bạn muốn thu hồi cho một lớp học đặc biệt, bạn có thể làm một cái gì đó như:
(recall.virginica <- recall["virginica"])
# virginica
# 0.9130435
Nếu thay vào đó bạn có kết quả đúng như hàng và kết quả dự đoán như cột, thì bạn sẽ lật các định nghĩa chính xác và gợi lại.
dữ liệu:
(mat = as.matrix(read.table(text=" setosa versicolor virginica
setosa 29 0 0
versicolor 0 20 2
virginica 0 3 21", header=T)))
# setosa versicolor virginica
# setosa 29 0 0
# versicolor 0 20 2
# virginica 0 3 21
Có thể đưa ra một số điểm F tổng thể cho dữ liệu đó bằng cách áp dụng mức trung bình? –
@mlee_jordan Có bạn có thể. Một tài nguyên để điều tra thêm là tài liệu hướng dẫn sử dụng để học hỏi: http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics. Tuy nhiên, có thể có những nguồn tài nguyên tổng quát hơn, tốt hơn. Trong thực tế, nếu bạn tính toán điểm F trên một trường hợp nhiều lớp, nó sẽ tự động tính điểm cho mỗi điểm và trung bình. Trong các trường hợp khác, như thu hồi, bạn có tùy chọn tính toán trung bình vi mô (tính tất cả TP, FN, FP và tính điểm) hoặc trung bình vĩ mô (tính điểm trên mỗi lớp và trung bình) khi tính điểm. – Cerno