2016-10-02 216 views
1

我試圖使用class庫中的knn函數。它給我一個錯誤,「train」與「class」的長度不一樣。K-最近鄰居

在分別打印列車和班級長度時,我發現列車長度爲100(根據需要),班級長度爲2(如預期的那樣)。如果我理解正確,cl或類,意味着是一個因式分解向量的標籤。我的標籤只是「橙色」和「藍色」。我遵循文檔中的示例,但錯誤仍然存​​在。我的代碼有明顯的錯誤嗎?任何幫助表示讚賞。

library(class) 

x <- runif(100, 1, 100) 
y <- runif(100, 1, 100) 
train.df <- data.frame(x, y) 

x.test <- runif(100, 1, 100) 
y.test <- runif(100, 1, 100) 
test.df <- data.frame(x.test, y.test) 

cl <- factor(c(rep("orange", 100), rep("blue", 100))) 

knn(train.df, test.df, cl, k=3, prob=TRUE) 
+1

'cl'是200個元素長。請嘗試爲每個班級調用50次「rep」。 –

+0

這個技巧。如果你想發表你的評論作爲答案,我可以檢查它。謝謝! – KingDan

+0

關於如何使用R /錯誤消息的問題在這裏是主題。這將是關於[SO]的主題。如果您可以等待,我們會爲您遷移它。 – gung

回答

0

cl是200個元素長。請嘗試每個班級撥打rep 50次。

library(class) 

x <- runif(100, 1, 100) 
y <- runif(100, 1, 100) 
train.df <- data.frame(x, y) 

x.test <- runif(100, 1, 100) 
y.test <- runif(100, 1, 100) 
test.df <- data.frame(x.test, y.test) 

cl <- factor(c(rep("orange", 50), rep("blue", 50))) 

knn(train.df, test.df, cl, k=3, prob=TRUE)