有没有办法查看 False Negative 行?

Posted

技术标签:

【中文标题】有没有办法查看 False Negative 行?【英文标题】:Is there a way to see False Negative rows? 【发布时间】:2021-06-20 11:21:48 【问题描述】:

我有一个数据框,分为训练和测试数据集,运行支持向量机、预测和混淆矩阵函数。

如何查看哪些行是 False Positive 和 False Negative?

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")

【问题讨论】:

请使用dput 发布您的数据样本。如果pred1test[,1]01 的向量,那么您可以使用逻辑运算符对数据进行子集化。要获取误报的行,您可以执行pred1 &amp; !test[,1]。对于误报,您可以使用!pred1 &amp; test[,1] 感谢您的回答,在这里您可以找到它: dput(test$F[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") dput(pred1[1 :20]) 结构(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, 67347L @ = 1L, 75 = 1L, 80 = 1L, 81 = 1L, 89 = 1L), .Label = c("0", "1"), class= "因子") 【参考方案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 & !test$F
false_negative <- !pred1 & test$F

false_positivefalse_negative 将是逻辑向量。例如,在false_positive 中,它将是TRUE,其中pred1 == 1test$F == 0FALSE 否则。

然后可以使用这些逻辑向量对 test 数据集的行进行子集化:

test[false_positive,]
test[false_negative,]

此外,根据混淆矩阵的输出,sum(false_positive) 应为 3,sum(false_negative) 应为 146。

【讨论】:

以上是关于有没有办法查看 False Negative 行?的主要内容,如果未能解决你的问题,请参考以下文章

什么是False Positive和False Negative

PHP:比较 NULL 和 FALSE - 转换为 ~Negative Infinity

有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?

有没有办法查看 Pycharm 正在运行哪些 git 命令?

channel关闭后立即返回false吗

当表没有行时,将表的可见性设置为 false(在报告服务中)