首页 > 解决方案 > 将一组点分组到一个预定义的点

问题描述

我正在寻找一个模型来分类一组靠近预定义点的点。

例如,假设我有几点:

X
1 1
1 2
1 3
2 1
2 3
3 1
3 2
3 3
6 6
8 7
8 5
9 3
10 7

我的目标是确定哪些点最接近预定义点 (2,2),并理想地输出这些点。

我尝试使用 KNN,但我无法弄清楚如何让 KNN 模型在 (2,2) 附近训练结果。任何关于我如何实现这一点的指导都会很棒。:)

点图

df <- data.frame( x = c(1,1,1,2,2,2,3,3,3,6,8,8,9,10), y = c(1,2,3,1,2,3,1,2,3,6,7,5,3,7))
df

goal_point <- c(x=2,y=2)
goal_point

标签: rmachine-learning

解决方案


您可以通过计算与目标的距离作为特征来解决此问题。

df$dist = sqrt((df$x - goal_point["x"])^2 + 
               (df$y - goal_point["y"])^2)
df$clust = kmeans(df, 2)$cluster

library(ggplot2)
ggplot(df, aes(x, y, color = clust)) +
  geom_point()

在此处输入图像描述

在这种情况下,kmeans 使用 x、y 和与目标的距离。您也可以通过 using 仅使用与目标的距离df$clust = kmeans(df[,3], 2)$cluster,这将导致相同的聚类。


推荐阅读