【问题标题】:Python Confusion Matrix LengthPython混淆矩阵长度
【发布时间】:2019-05-24 04:44:46
【问题描述】:

我正在尝试评估几个 KNN 分类器的准确性和性能。

DataTest["ConfM_K30_ST"] = confusion_matrix(
    DataTest["ST_Class"], 
    DataTest["KNN_K30_ST"]
    )        

aux = DataTest["ST_Class"]
aux1 = DataTest["KNN_K30_ST"]

在尝试将预测结果与原始结果进行比较时,我收到以下错误:

ValueError: Length of values does not match length of index

DataTest 是我的 DataFrame,包含 20% 的数据。在本例中,标记数据为"ST_Class",预测数据为"KNN_K30_ST"

为了验证发生了什么,我在 aux 和 aux1 上设置了这两个数据帧。它们都是Seriessizes (3224,) 类型。

我能看到的唯一问题是索引不是连续的,不是从 0 开始,也不是以 3223 结束。为了便于理解,请看下图。

链接:https://i.imgur.com/Splhr62.png

【问题讨论】:

  • 如果 DataTest 是 pandas 数据框,则不能将混淆矩阵分配给列,因为根据定义,混淆矩阵将是二维的。您可以使用pandas.crosstab 在真实值和预测值之间生成混淆矩阵。您还可以使用重置索引来比较相同长度的系列。
  • 对,我太专注于系列长度而忽略了显而易见的,谢谢@iamchoosinganame。你现在能帮我结束这个问题吗?

标签: python pandas confusion-matrix


【解决方案1】:

我能看到的唯一错误是您试图将confusion matrix 作为column 存储在dataframe 中。由于尺寸不匹配,这是不可能的。

这是一个小样本

df1
   a
0  1
2  1
4  1

df2
   a
1  0
3  1
5  0

# Output from the confusion matrix
confusion_matrix(df1, df2)
array([[0, 0],
       [2, 1]])

【讨论】:

    【解决方案2】:

    正如建议的那样,我无意中尝试将混淆矩阵存储在 DataFrame 中。 我的解决方案是将其设置在字典中。

    感谢大家的快速回复!

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2018-08-22
      • 1970-01-01
      • 2016-07-25
      • 2020-07-25
      • 2015-12-17
      • 2012-01-20
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多