2015-12-02 128 views
1

我希望大家都很好;我有一个问题可能会被视为一个愚蠢的问题,但我真的需要有人为我解释它。我也认为它对一些人有用,因为之前有人问过他没有满意的答案。K最近的邻居与高尔距离测量在R

由于,我已混合数据类型的矩阵,我寻找K-nearst邻居算法用于与高尔距离工作在R.我发现功能Knngowdprep声称能执行此之下。 http://finzi.psych.upenn.edu/library/dprep/html/knngow.html

函数带三个参数knngow(Training_Set,Testing_set,K_number)并返回预测的类。

我在玩弄它,想知道该功能如何识别我的目标矢量是什么?换句话说,它是如何返回预期的班级,而不是事先与我的目标栏目确认。

请看下面(我检索它使用功能编辑

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 
} 

请能有人给我解释一下代码的源代码?

我希望我以正确的形式发布问题,请让我知道是否必须将其移动到其他地方。

非常感谢您的时间。

回答

0

knngow函数以列车的最后一列作为目标属性。另外p = dim(train)[2])表示您的列号。

P列训练数据的最后一列)不用于计算高尔DIST。只有在预测测试样品的类别标签时才考虑它。