让我给出一些背景背景:我有一个100个向量的列表,每个向量有50个维度,我想将前50个向量与A类相关联,最后的向量与B类相关联。
我的问题是:我怎样才能在以后应用kNN以及哪个库有更适合的kNN方法?
提前致谢。
答案 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分类似乎是最简单的。