r - 绘制kmeans图中的异常值

时间:2016-09-16 11:14:40

标签: r ggplot2 data-mining outliers

我正在尝试使用kmeans进行分析。

我有一个数据集:

> head(data)

             tstamp   elementid     value hours
2016-09-15 15:20:28     IN_TEMP  25.12237    15
2016-09-15 15:20:29     IN_TEMP  25.44952    15
2016-09-15 15:20:29     IN_TEMP  25.53550    15
2016-09-15 15:20:39 IN_PRESSURE 101.40683    15
2016-09-15 15:20:49     IN_TEMP  25.94596    15
2016-09-15 15:20:49     IN_TEMP  25.38742    15

所以我这样做了:

dataCluster <- kmeans(data[, 3:4], 2, nstart = 20)
dataCluster$cluster <- as.factor(dataCluster$cluster)
levels(dataCluster$cluster) <- c("IN_TEMP", "IN_PRESSURE")
ggplot(data, aes(value, hours, color = dataCluster$cluster)) + geom_point()

结果是: enter image description here

对我来说没问题,但是当我做的时候:

table(dataCluster$cluster, data$elementid)

             IN_PRESSURE | IN_TEMP
  IN_TEMP  |             0  |   953
  IN_PRESSURE |        508  |    44

我在第二个集群上有44个值是IN_TEMP值(第一个集群)。

我可以用第一个簇的颜色(红色)绘制这44个值吗?

谢谢你的帮助 问候

2 个答案:

答案 0 :(得分:0)

您可以使用Before: Mark - 112.2 Roger - 108.77 Pete - 110.038 Gary - 109.49 Sid - 111.742 Rod - 87.082 Bob - 110.404 Eric - 112.482 Will - 113.478 Nigel - 0 Harry - 110.01 Paul - 112.887 Victor - 109.182 Matt - 109.987 Clive - 109.975 Sol - 109.23 Olly - 0 Ben - 0 Craig - 114.241 Andy - 96.399 Adam - 93.177 Kel - 110.766 After: Rod - 87.082 - 1 Adam - 93.177 - 2 Paul - 112.887 - 3 Roger - 108.77 - 4 Bob - 110.404 - 5 Mark - 112.2 - 6 Will - 113.478 - 7 Gary - 109.49 - 8 Pete - 110.038 - 9 Harry - 110.01 - 10 Matt - 109.987 - 11 Craig - 114.241 - 12 Eric - 112.482 - 13 Sid - 111.742 - 14 Kel - 110.766 - 15 Clive - 109.975 - 16 Sol - 109.23 - 17 Victor - 109.182 - 18 Andy - 96.399 - 19 Olly - 0 - 20 Nigel - 0 - 21 Ben - 0 - 22 为群集设置颜色:

scale_colour_manual

有关详细信息,请参阅scale_manual

答案 1 :(得分:0)

如果我得到了正确的答案,那就不是你想要着色的簇标签,而是想要通过变量elementid进行着色。您只需使用以下内容:

ggplot(data, aes(value, hours, color = elementid)) + geom_point()

这有帮助吗?