#r #confusion-matrix #false-positive
Вопрос:
У меня есть фрейм данных, разделенный на наборы обучающих и тестовых данных, запуск svm, функции прогнозирования и матрицы путаницы.
Как я могу увидеть, какие строки являются ложноположительными и Ложноотрицательными?
Data_7c<- Data_7G[, c(6, 15:18)]
split = sample.split(Data_7c$F, SplitRatio = 0.70)
train = subset(Data_7c, split == TRUE)
test = subset(Data_7c, split == FALSE)
data1 = svm(F ~., data = train, method="C-classification", kernel="radial", cost = 1, gamma=0.001, scale = FALSE)
pred1 <- predict(data1, task = bh.task,newdata = test)
head(as.data.frame(pred1))
SVMcf1 <- confusionMatrix(pred1, as.factor(test[,1]), positive = "1")
SVMcf1$table
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 2203 146
1 3 2
Данные test$F[1:20]
и pred1[1:20]
:
structure(c(1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L), .Label = c("0", "1"), class = "factor")
structure(c(`2` = 1L, `3` = 1L, `8` = 1L, `19` = 1L, `22` = 1L,
`25` = 1L, `40` = 1L, `49` = 1L, `51` = 1L, `55` = 1L, `57` = 1L,
`60` = 1L, `62` = 1L, `63` = 1L, `67` = 2L, `72` = 1L, `75` = 1L,
`80` = 1L, `81` = 1L, `89` = 1L), .Label = c("0", "1"), class = "factor")
Комментарии:
1. Пожалуйста, опубликуйте образец использования ваших данных
dput
. Еслиpred1
иtest[,1]
являются векторами0
и1
, то вы можете использовать логические операторы для подмножества ваших данных. Чтобы получить строки, которые являются ложными срабатываниями, вы можете это сделатьpred1 amp; !test[,1]
. Для ложных негативов вы бы подошли!pred1 amp; test[,1]
.2. спасибо за ваш ответ, здесь ты можешь найти его: действия dput(тест$Е[1:20]) структура(c(1л, 1л, 1л, 1л, 2л, 2л, 1л, 1л, 1л, 2л, 2л, 2л, 2л, 2л, 2л, 1л, 1л, 1л, 1л, 2л), .Этикетка = с(«0», «1»), класс = «фактор») действия dput(pred1[1:20]) структура(с(
2
= 1 л3
= 1 л8
= 1 л19
= 1 л22
= 1 л25
= 1 л40
= 1 л49
= 1 л51
= 1 л55
= 1 л57
= 1 л60
= 1 л62
= 1 л63
= 1 л67
= 2 л,72
= 1 л75
= 1 л,80
= 1 Л81
= 1 Л89
= 1 Л), .Этикетка = с(«0», «1»), класс = «фактор»)
Ответ №1:
Вы можете использовать логические операторы для определения ложноположительных и ложноотрицательных значений, хранения их в векторе, а затем подмножества ваших данных.
# convert factor to numeric 0/1
pred1 <- as.numeric(levels(pred1))[pred1]
test$F <- as.numeric(levels(test$F))[test$F]
false_positive <- pred1 amp; !test$F
false_negative <- !pred1 amp; test$F
false_positive
и false_negative
будут логическими векторами. Например, в false_positive
нем будет TRUE
где pred1 == 1
и test$F == 0
как и FALSE
иначе.
Эти логические векторы затем можно использовать для подмножества строк вашего test
набора данных:
test[false_positive,]
test[false_negative,]
Кроме того, sum(false_positive)
должно быть 3 и sum(false_negative)
должно быть 146 на основе выходных данных вашей матрицы путаницы.