【发布时间】:2021-04-15 15:58:12
【问题描述】:
我想了解 R kknn 包如何计算二元分类问题的权重、距离和类别概率。在下面的 R 代码中,训练样本中有 3 个观察值,保留样本中有 1 个观察值。两个预测变量是身高和体重。使用欧几里得距离,训练样本中每个观测值的距离为:
sqrt((6-8)^2 + (4-5)^2) = 2.24
sqrt((6-3)^2 + (4-7)^2) = 4.24
sqrt((6-7)^2 + (4-3)^2) = 1.41。
在 k=3 且权重相等的情况下,我得到的坚持概率为:
(1/3 * 1) + (1/3 * 0) + (1/3 * 1) = 0.67。
在 k=2 且权重相等的情况下,我得到的坚持概率为:
(1/2 * 1) + (1/2 * 1) = 1.00。
我想了解 R kknn 包如何使用“三角形”、“高斯”和“反”权重(以及更普遍的)进行这些相同的计算。
library(kknn)
training <- data.frame(class = c(1, 0, 1), height = c(8, 3, 7), weight = c(5, 7, 3))
holdouts <- data.frame(class = 1, height = 6, weight = 4)
triangular_kernel <- kknn(class ~., training, holdouts, distance = 2, kernel = "triangular", k = 3)
triangular_kernel[["fitted.values"]]
triangular_kernel[["W"]]
triangular_kernel[["D"]]
gaussian_kernel <- kknn(class ~., training, holdouts, distance = 2, kernel = "gaussian", k = 3)
gaussian_kernel[["fitted.values"]]
gaussian_kernel[["W"]]
gaussian_kernel[["D"]]
inverse_kernel <- kknn(class ~., training, holdouts, distance = 2, kernel = "inv", k = 3)
inverse_kernel[["fitted.values"]]
inverse_kernel[["W"]]
inverse_kernel[["D"]]
【问题讨论】:
-
看起来这个包是同一作者写的论文的实现。在谷歌上,我在这里找到了该论文的 pdf 版本(不知道它是否是合法副本):epub.ub.uni-muenchen.de/1769/1/paper_399.pdf。我不知道你的问题的答案,但可以想象你可以在论文中找到它。
-
距离加权 k 近邻 (DWKNN)
标签: r machine-learning nearest-neighbor