具有多维向量的KNN

时间:2014-03-25 03:29:42

标签: r machine-learning knn

让我给出一些背景背景:我有一个100个向量的列表,每个向量有50个维度,我想将前50个向量与A类相关联,最后的向量与B类相关联。

我的问题是:我怎样才能在以后应用kNN以及哪个库有更适合的kNN方法?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我想到的第一个选项之一就是从矢量列表中创建一个data.frame,创建因子指标,然后使用来自class package的knn。

从矢量列表中创建data.frame

使用rbind,创建一个矩阵然后使用as.data.frame函数(此question中的更多示例)。假设l是向量列表:

data <- as.data.frame(do.call(rbind, l))

因素指标

class <- as.factor(c(rep("A", 50), rep("B", 50)))

使用类包进行kNN分类

如果您没有单独的测试数据,可能最好的方法是

train.ind <- sample(1:100, 75) # making indexes to split data into 75% train and 25% test
resulting.classes <- knn(train = data[train.ind, ], test = data[-train.ind, ], cl = class)

如果您有单独的列车和测试数据,那么只需使用

resulting.classes <- knn(train = train.data, test = test.data, cl = class)

可能有用的kNN的其他选择 - ‘kknn’ package'FNN' package.,但类包对于简单的kNN分类似乎是最简单的。