按最小距离分类

时间:2018-02-12 18:23:21

标签: r dataframe dplyr data.table classification

我想通过已知中心之间的最小距离对我的数据进行分类。 如何使用R?

实现

中心数据

> centers
   X
1   -0.78998176
2    2.40331380
3    0.77320007
4   -1.64054294
5   -0.05343331
6   -1.14982180
7    1.67658736
8   -0.44575567
9    0.36314671
10   1.18697840

想要分类的数据

> Y
[1] -0.7071068  0.7071068 -0.3011463 -0.9128686 -0.5713978   NA

我预期的结果:

1. find the closest distance (minimum absolute difference value) between each 
   items in Y and centers.
2. Assigns sequence number of classes to each items in Y

预期结果:

> Y
    [1] 1 3 8 1 8  NA


Y <- c(-0.707106781186548, 0.707106781186548, -0.301146296962689, 
-0.912868615826101, -0.571397763410073, NA)

centers <- structure(c(-0.789981758587318, 2.40331380121291, 0.773200070034431, 
-1.64054294268215, -0.0534333085941505, -1.14982180092619, 1.67658736336158, 
-0.445755672120908, 0.363146708827924, 1.18697840480949), .Dim = c(10L, 
1L), .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", 
"9", "10"), "X"))

2 个答案:

答案 0 :(得分:1)

true

基本上,您将sapply(Y, function(y) {r=which.min(abs(y-centers)); ifelse(is.na(y), NA, r)}) 应用于Y的每个元素,并确定哪个中心具有最小的绝对距离。领带转到列表中的早期元素。 which.min值需要单独处理,这就是为什么我在那里有NA的第二个语句。

答案 1 :(得分:0)

这不是聚类。

但最近邻居分类

请参阅knn功能。

相关问题