python - 对混淆矩阵的顺序输出感到困惑
问题描述
我使用 SVM 分类器进行二元分类。我们使用合法用户(标记为“0”,正类)和不受欢迎的用户(标记为“1”,负类)的数据样本训练模型。
在测试模型时,我还将合法用户的样本标记为 0,将不受欢迎的用户标记为 1。X_test 有 5 个数据样本(前 5 行)合法用户标记为 0,其他 5 个样本(后 5 行)不受欢迎的用户标记为 1。这是标签 y_test= [0,0,0,0,0,1,1,1,1,1]
然后,我用这个分类:
y_pred = classifier.predict(X_test)
输出 y_pred = [0,0,0,1,0,1,1,0,0,1]
在我们的工作中,我们考虑了:
(真阳性)TP 是正确分类为合法用户的合法用户样本(y_test 中标签为零)(y_pred 中标签为零)。
(假阴性)FN 是合法用户的样本(y_test 中的标签为零)被错误地分类为不受欢迎的用户(y_pred 中的标签为 1)。
(真否定)TN 是不受欢迎的用户样本(y_test 中的标签一)被正确分类为不受欢迎的样本(y_pred 中的标签一)。
(误报)FP 是不想要的用户样本(y_test 中的标签为 1)被错误地分类为合法的样本(y_pred 中的标签为 0)。
但是,何时将 y_test 和 y_pred 输入到混淆矩阵,使用:
print('Outcome confusion_matrix values : \n', confusion_matrix(y_test, y_pred))
混乱给出:[4 1][2 3]
在混淆矩阵文档中,他们说顺序是 [TN FP][FN TP]
然而,根据我们使用的 TP、FN、FP、TN 定义,这与我们工作中使用的顺序相反。在我们的工作中:
0--> 0 = TP;
0--> 1 = FN;
1--> 0 = FP;
1--> 1 = TN;
因此,我滑动并考虑了TP = 4,FN = 1,FP = 2,TN = 3,以匹配我们工作的定义。
我写吗?我很困惑,请帮助我澄清这一点。
解决方案
推荐阅读
- c# - 我可以在 Json 序列化器的模型的单个属性上使用 TypeConverter 属性吗?
- jakarta-ee - JAX-RS Java EE 8:如果设置了某些标头,则 Gzip 输出 JSON
- javascript - 四舍五入到最接近的 N 因子
- scala - 如何使用正则表达式 scala spark 验证地址
- javascript - Ionic - 从图像中获取 RGB 值
- java - 在 HashMap 中使用 ComputeIfAbsent
- r - R Shiny Dplyr - 提取条件,重复查询数据库并创建仪表板
- ssas-tabular - 在表级别自动刷新 SSAS 表格模型
- vb.net - 是否可以让 CStr 抛出异常?
- mysql - 复杂的 JPQL 查询返回 0 零结果在查询中两次获取表