【发布时间】:2014-06-24 08:17:14
【问题描述】:
我希望你能帮助我解决我的问题。我正在尝试使用 kmeans 算法检测异常值。首先,我执行算法并选择那些与聚类中心有很大距离的对象作为可能的异常值。我不想使用绝对距离,而是想使用相对距离,即对象到集群中心的绝对距离与集群中所有对象到集群中心的平均距离之比。基于绝对距离的异常值检测代码如下:
# remove species from the data to cluster
iris2 <- iris[,1:4]
kmeans.result <- kmeans(iris2, centers=3)
# cluster centers
kmeans.result$centers
# calculate distances between objects and cluster centers
centers <- kmeans.result$centers[kmeans.result$cluster, ]
distances <- sqrt(rowSums((iris2 - centers)^2))
# pick top 5 largest distances
outliers <- order(distances, decreasing=T)[1:5]
# who are outliers
print(outliers)
但是如何使用相对距离而不是绝对距离来查找异常值?
【问题讨论】:
-
这个问题似乎是题外话,因为它是关于统计数据