距离已知时如何计算每次观测的概率值-> kmeans R编程

How to calculate the probability value for each observation when distances are known - > kmeans R programming

我是 R 编程的新手,正在尝试弄清楚以下内容。以下 table 包含每个观察的欧氏距离和聚类详细信息。 table 中有超过 100000 个不同的 ID,并且已为每个聚类计算了每个 ID 值的距离。有 6 个名为 1-6 的簇。

我需要计算最后一列,它应该是属于该聚类的每个观察值的概率值。这是由第一个条目给出的,

展开时的分母是

每个概率值都是根据该 id 的 6 个距离值计算的。 table 是 data.table 格式。 我想尝试这样的事情。但我什至不知道如何完成那行。

dt_calc[ prob_value := (1 / (distance/dt_calc[距离, by = .(id, cluster== 1 )]) ^ 2), by =编号]

id cluster distance prob_value
1 1 d1 p1
1 2 d2 ?
1 3 d3 ----
1 4 d4 ----
1 5 d5 ----
1 6 d6 ----
2 1 d7 ----
2 2 d8 ----
2 3 d9 ----
2 4 d10 ----
2 5 d11 ----
2 6 d12 ----

谁能告诉我如何计算这个 prob_value 列。

我不确定 = .EACHI 在这里的效率如何,但这似乎有效。我无法弄清楚为什么在通过引用分配时会出错,所以我将它转储到一个新的 data.table 中,但这至少可以让你到达某个地方。

dt   <- data.table(id = rep(c(1, 2), each = 6),
                   cluster = rep(1:6, 2),
                   distance = sample(100, size = 12, replace = TRUE))

test <- dt[dt, 1/sum((i.distance/distance) ^ 2),
           on = .(id), by = .EACHI]