微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在距离已知时计算每个观察的概率值 - > kmeans R 编程

我是 R 编程的新手,并试图弄清楚以下内容。下表包含每个观察的欧几里得距离和聚类详细信息。表中有超过 100000 个不同的 id,并且对于每个 id 值,已经为每个集群计算了距离。有 6 个簇命名为 1-6。

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

p1 = 1 / (())

展开时的分母是

enter image description here

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

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

id 集群 距离 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,distance = sample(100,size = 12,replace = TRUE))

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。