【问题标题】:Highlight only correct class in a different color in R histogram在 R 直方图中仅突出显示不同颜色的正确类
【发布时间】:2016-10-10 18:24:38
【问题描述】:

我正在研究一个 k-Nearest Neighbors 分类系统,并使用“桶投票”系统对预测的类别进行采样,然后根据样本中哪个类别获得最高“投票”数返回预测。

我的问题是我想自动生成直方图,其中蓝色条表示不正确的预测,红色条表示正确预测的类。这是一段sn-p代码:

for (class in 14:15) {
     class_test_index <- which(walkTest_labels == class)
     class_test <- as.numeric(walkTest_pred[class_test_index])
     hist(class_test,
           breaks = 0:22,
           col = ifelse(class_test == class, "red", "blue"),
           border = "green",
           main = "Distribution by Classes",
           ylab = "Count",
           xlab = "Class")
      }

我刚刚在我的循环中使用了两个类来说明。生成的两个直方图的链接在这里。

http://i.stack.imgur.com/VXger.png

http://i.stack.imgur.com/ChAE7.png

在这两个中,只有一个栏,最大的一个,应该是红色的。其中一个正确的条是红色的,但还有另一个条也是红色的。在另一个直方图中,还有两个红色的条形图,但它们都是错误的。

【问题讨论】:

  • 请参阅 here 以获取有关使用 hist 处理此类事情的更好方法的一般指导。但是,考虑到数据的离散性,条形图可能更简单且更有意义。
  • 您能否提供几行用于生成直方图的数据框?
  • 嗨,内森,感谢您的提问。这只是一个简单的示例,用于创建直方图。 &gt; head(class_test) [1] 16 5 5 3 15 15 如您所见,它只是一个分类向量。它们的范围在 1 到 22 之间。
  • 感谢 joran,我将检查条形图,看看这是否是一个更简单的解决方案。

标签: r histogram knn


【解决方案1】:

好的,我找到了自己问题的答案。感谢 Nathan Day 建议我考虑使用 barplot() 函数,因为这是我解决问题的方法。

我所做的是创建一个包含我所有类的向量(从 1 到 22 的整数列表)。然后在for 循环中,我创建了另一个向量,该向量是通过将这些数字中的每一个与正在测试的类值进行比较来创建的——如果值不匹配,它会在向量中创建一个“蓝色”值,如果更正它会创建“红色”。

创建条形图时,此向量用作颜色参数,从而将红色添加到正确的类并将所有其他类着色为蓝色。瞧!

代码如下:

class_list <- 1:22

for (class in 14:15) {
   class_test_index <- which(walkTest_labels == class)
   class_test <- table(walkTest_pred[class_test_index])
   this_class <- ifelse(class_list == class, "red", "blue")
   barplot(class_test,
        col = this_class,
        border = "green",
        main = "Distribution by Classes",
        ylab = "Count",
        xlab = "Class")
   }

如果有人能想到一种更优雅的方式来执行此操作,那也将不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多