2015-02-16 2 views
1

Это работа на дому.Поиск k-ближайшего соседа в R с knn() из пакета классов

У меня есть 2 матрицы, 1 для обучения и 1 для теста. Данные имеют два столбца данных, которые должны использоваться для классификации, и третий столбец с известным классом. У обеих матриц есть третий столбец.

[1] [2] [3] 
[1] 6.4 0.32 2 
[2] 4.8 0.34 0 
[3] 4.9 0.25 2 
[4] 7.2 0.32 1 

где intergers являются классами (от 0 до 2).

Размер для моих наборов данных - 100 3 для набора для обучения и 38 3 для набора тестов.

Я попытался использовать функцию knn() класса lbrary.

КНН использует follwing аргументы: (поезда, тест, кл, к = 1, л = 0, Проб = FALSE, use.all = TRUE)

Я пытался использовать наборы мои данные непосредственно, но то я получаю сообщение об ошибке: «« train »и« class »имеют разную длину»

Я пробовал кое-что, но я застрял через несколько часов. На данный момент у меня есть этот код в редакторе:

cl <- t(factor(c(rep("0",1), rep("1",1), rep("2",1)))) 
k <- knn(train, test, cl) 

но он не работает. Кто-нибудь может мне помочь?

Я хочу найти функцию с тремя различными значениями k и найти точность каждого из них. После этого я буду 5-кратным крестом, проверяющим лучший k.

+0

http://stackoverflow.com/questions/16276388/knn-in-r-train-and-class-have-different-lengths – Metrics

ответ

3

Как указано в документации: cl - это factor of true classifications of the training set т. Е. Ваша y переменная (третья колонка вашего учебного набора).

Это означает, что функция должна выглядеть следующим образом:

cl <- factor(c(2,0,2,1)) #or alternatively factor(train[,3]) 
k <- knn(train[,c(1,2)], test[,c(1,2)], cl) 

Как вы можете видеть, как в обучении и тест устанавливает y переменных (столбец с классами) не включены в тестовых и учебных комплектах , Столбец включен только в качестве аргумента в аргументе cl.

Ошибка, которую вы получили, состоит в том, что количество строк набора тренировок не равно длине коэффициента, и в этом случае у него было только 3 элемента (это потому, что вы считали, что вам нужно только указать уровни фактор).

Смежные вопросы