Мой вопрос связан с этим one о создании матрицы путаницы в R с помощью функции table()
. Я ищу решение без использования пакета (например, каретки).R Общее решение для создания матрицы смешения 2 * 2
Допустим, это наша predictions
и labels
в бинарной проблемы классификации:
predictions <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86, 0.15, 0.52, 0.74, 0.24)
labels <- c(1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0)
Для этих значений, решение ниже работает хорошо, чтобы создать путаницу матрицу 2 * 2 для, скажем, порог = 0,5 :
# Confusion matrix for threshold = 0.5
conf_matrix <- as.matrix(table(predictions>0.5,labels))
conf_matrix
labels
0 1
FALSE 4 3
TRUE 2 5
Однако, я не получаю матрицу 2 * 2, если выбрать любое значение, которое меньше, чем min(predictions)
или больше, чем max(predictions)
, так как данные не будут иметь либо ЛОЖЬ или ИСТИНА возникновения, например:
conf_matrix <- as.matrix(table(predictions>0.05,labels))
conf_matrix
labels
0 1
TRUE 6 8
мне нужен метод, который последовательно производит путаницу матрицы 2 * 2 для всех возможных порогов (границ решения) между 0 и 1, как я использовать это в качестве входного сигнала в оптимизации. Есть ли способ, которым я могу настроить функцию table
, чтобы она всегда возвращала матрицу 2 * 2?
да, спасибо !. Я пытался играть с параметрами 'table()' like 'dnn',' exclude'. но вместо этого я должен был сформировать новый фактор, который учитывает не встречающийся класс. – Rhubarb