有没有办法查看 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
发布您的数据样本。如果pred1
和test[,1]
是0
和1
的向量,那么您可以使用逻辑运算符对数据进行子集化。要获取误报的行,您可以执行pred1 & !test[,1]
。对于误报,您可以使用!pred1 & 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, 67
347L @ = 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_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。
【讨论】:
以上是关于有没有办法查看 False Negative 行?的主要内容,如果未能解决你的问题,请参考以下文章
什么是False Positive和False Negative
PHP:比较 NULL 和 FALSE - 转换为 ~Negative Infinity
有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?