R 中具有 Gower 距离度量的 K 最近邻
K nearest neighbors with Gower distance measure in R
希望大家都好;我有一个问题,它可能看起来很愚蠢,但我真的需要有人为我解释一下。我也认为它对某些人有用,因为之前有人问过它但没有令人满意的答案。
因为我有混合数据类型矩阵,所以我一直在寻找适用于 R 中高尔距离的 K 最近邻算法。我在包 Knngow 下找到了函数 Knngow =28=]dprep 声称可以执行此操作。
http://finzi.psych.upenn.edu/library/dprep/html/knngow.html
该函数采用三个参数 knngow(Training_Set、Testing_set、K_number) 和 return 预测的 class.
我在玩它,想知道这个函数如何识别我的目标向量是什么?换句话说,它是如何 return 预测的 class,而我没有提前在我的目标列中确认它。
请在下面找到源代码(我使用函数 edit 检索了它)
function (train, test, k)
{
p = dim(train)[2]
ntest = dim(test)[1]
ntrain = dim(train)[1]
classes = rep(0, ntest)
if (ntest == ntrain) {
for (i in 1:ntest) {
tempo = order(gower.dist(test[i, -p], train[-i,
-p]))[1:k]
classes[i] = moda(train[tempo, p])[1]
}
}
else {
for (i in 1:ntest) {
tempo = order(StatMatch::gower.dist(test[i, -p],
train[, -p]))[1:k]
classes[i] = moda(train[tempo, p])[1]
}
}
classes
}
有人可以为我解释一下代码吗?
我希望我的问题 post 格式正确,如果我必须将它移到其他地方,请告诉我。
非常感谢您的宝贵时间。
knngow 函数将 train 的最后一列作为目标属性。另外 p = dim(train)[2]) 表示你的列号。
列 p(训练数据的最后一列)不用于计算高尔距离。只有在预测测试样本的class标签时才会考虑。
希望大家都好;我有一个问题,它可能看起来很愚蠢,但我真的需要有人为我解释一下。我也认为它对某些人有用,因为之前有人问过它但没有令人满意的答案。
因为我有混合数据类型矩阵,所以我一直在寻找适用于 R 中高尔距离的 K 最近邻算法。我在包 Knngow 下找到了函数 Knngow =28=]dprep 声称可以执行此操作。 http://finzi.psych.upenn.edu/library/dprep/html/knngow.html
该函数采用三个参数 knngow(Training_Set、Testing_set、K_number) 和 return 预测的 class.
我在玩它,想知道这个函数如何识别我的目标向量是什么?换句话说,它是如何 return 预测的 class,而我没有提前在我的目标列中确认它。
请在下面找到源代码(我使用函数 edit 检索了它)
function (train, test, k)
{
p = dim(train)[2]
ntest = dim(test)[1]
ntrain = dim(train)[1]
classes = rep(0, ntest)
if (ntest == ntrain) {
for (i in 1:ntest) {
tempo = order(gower.dist(test[i, -p], train[-i,
-p]))[1:k]
classes[i] = moda(train[tempo, p])[1]
}
}
else {
for (i in 1:ntest) {
tempo = order(StatMatch::gower.dist(test[i, -p],
train[, -p]))[1:k]
classes[i] = moda(train[tempo, p])[1]
}
}
classes
}
有人可以为我解释一下代码吗?
我希望我的问题 post 格式正确,如果我必须将它移到其他地方,请告诉我。
非常感谢您的宝贵时间。
knngow 函数将 train 的最后一列作为目标属性。另外 p = dim(train)[2]) 表示你的列号。
列 p(训练数据的最后一列)不用于计算高尔距离。只有在预测测试样本的class标签时才会考虑。