2015-12-02 163 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。只有在預測測試樣品的類別標籤時才考慮它。